|
3 | 3 | import unittest |
4 | 4 |
|
5 | 5 | from src.models.utils.generic_utils import form_json |
6 | | -from tests.utils.generic_utils import load_json_data |
| 6 | +from tests.utils.generic_utils import load_json_data, format_date_types |
| 7 | + |
| 8 | +import unittest |
| 9 | +from datetime import datetime, date |
7 | 10 |
|
8 | 11 |
|
9 | 12 | class TestFormJson(unittest.TestCase): |
@@ -68,3 +71,25 @@ def test_elements_whitespace_and_case_are_handled(self): |
68 | 71 | self.assertEqual(out["link"][0]["url"], f"{self.baseurl}?identifier={self.identifier}&_elements={raw_elements}") |
69 | 72 | self.assertEqual(res["id"], self.response["id"]) |
70 | 73 | self.assertEqual(res["meta"]["versionId"], self.response["version"]) |
| 74 | + |
| 75 | + |
| 76 | +class TestFormatFutureDates(unittest.TestCase): |
| 77 | + def test_date_mode_formats_dates_and_datetimes(self): |
| 78 | + inputs = [date(2100, 1, 2), datetime(2100, 1, 3, 12, 0, 0)] |
| 79 | + expected = ["2100-01-02", "2100-01-03"] |
| 80 | + self.assertEqual(format_date_types(inputs, mode="date"), expected) |
| 81 | + |
| 82 | + def test_datetime_mode_formats_dates_and_datetimes(self): |
| 83 | + inputs = [date(2100, 1, 2), datetime(2100, 1, 3, 12, 0, 0)] |
| 84 | + expected = ["2100-01-02", "2100-01-03T12:00:00"] |
| 85 | + self.assertEqual(format_date_types(inputs, mode="datetime"), expected) |
| 86 | + |
| 87 | + def test_default_auto_mode_is_currently_unsupported(self): |
| 88 | + # Current implementation raises TypeError when mode is not 'date' or 'datetime' |
| 89 | + inputs = [date(2100, 1, 2)] |
| 90 | + with self.assertRaises(TypeError): |
| 91 | + format_date_types(inputs) # default mode is 'auto' |
| 92 | + |
| 93 | + |
| 94 | +if __name__ == "__main__": |
| 95 | + unittest.main() |
0 commit comments