|
1 | 1 | from datetime import date, datetime |
| 2 | +from enum import auto |
2 | 3 |
|
3 | 4 | import pytest |
4 | 5 |
|
5 | 6 | from undate import Undate, UndateInterval, Calendar |
6 | | -from undate.converters.base import BaseCalendarConverter |
| 7 | +from undate.undate import StrEnum # import whichever version is used there |
| 8 | +from undate.converters.base import BaseCalendarConverter, BaseDateConverter |
7 | 9 | from undate.date import Date, DatePrecision, Timedelta, UnDelta, UnInt |
8 | 10 |
|
9 | 11 |
|
@@ -545,3 +547,25 @@ def test_calendar_get_converter(): |
545 | 547 | converter = Calendar.get_converter(cal) |
546 | 548 | assert isinstance(converter, BaseCalendarConverter) |
547 | 549 | assert converter.name.lower() == cal.name.lower() |
| 550 | + |
| 551 | + class BogusCalendar(StrEnum): |
| 552 | + """Unsupported calendars""" |
| 553 | + |
| 554 | + FOOBAR = auto() |
| 555 | + DUMMY = auto() |
| 556 | + |
| 557 | + # test error handling |
| 558 | + # ensure we raise a ValueError when an invalid calendar is requested |
| 559 | + with pytest.raises(ValueError, match="Unknown calendar"): |
| 560 | + Calendar.get_converter(BogusCalendar.FOOBAR) |
| 561 | + |
| 562 | + class DummyFormatter(BaseDateConverter): |
| 563 | + name = "Dummy" |
| 564 | + |
| 565 | + # also error if you request a converter that is not a calendar converter |
| 566 | + # NOTE: this fails because get_converter converts the enum to title case... |
| 567 | + # can't be tested with any of the existing non-calendar converters |
| 568 | + with pytest.raises( |
| 569 | + ValueError, match="Requested converter 'Dummy' is not a CalendarConverter" |
| 570 | + ): |
| 571 | + Calendar.get_converter(BogusCalendar.DUMMY) |
0 commit comments