Skip to content

Commit ebd7fd4

Browse files
committed
Tests
1 parent 7de12d7 commit ebd7fd4

File tree

2 files changed

+96
-2
lines changed

2 files changed

+96
-2
lines changed

rest_client_gen/dynamic_typing/string_datetime.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ def is_date(s: str) -> Optional[date]:
4949

5050

5151
_check_values_time = (
52-
datetime(2018, 10, 11, 0, 4, 5, 678, tzinfo=None),
53-
datetime(2018, 12, 30, 0, 4, 5, 678, tzinfo=None)
52+
datetime(2018, 10, 11),
53+
datetime(2018, 12, 30)
5454
)
5555

5656

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import datetime
2+
3+
import pytest
4+
5+
from rest_client_gen.dynamic_typing import (
6+
FloatString, IntString, IsoDateString, IsoDatetimeString, IsoTimeString, register_datetime_classes
7+
)
8+
from rest_client_gen.generator import MetadataGenerator
9+
10+
register_datetime_classes()
11+
12+
test_detect_type_data = [
13+
# Check that string datetime doesn't break default string types
14+
pytest.param(
15+
"1",
16+
IntString,
17+
id="default_check_int"
18+
),
19+
pytest.param(
20+
"1.5",
21+
FloatString,
22+
id="default_check_float"
23+
),
24+
pytest.param(
25+
"2018-12-31",
26+
IsoDateString,
27+
id="date"
28+
),
29+
pytest.param(
30+
"12:58",
31+
IsoTimeString,
32+
id="time"
33+
),
34+
pytest.param(
35+
"2018-12-31T12:58:12Z",
36+
IsoDatetimeString,
37+
id="datetime"
38+
)
39+
]
40+
41+
42+
@pytest.mark.parametrize("value,expected", test_detect_type_data)
43+
def test_detect_type(models_generator: MetadataGenerator, value, expected):
44+
result = models_generator._detect_type(value)
45+
assert result == expected
46+
47+
48+
test_parse_data = [
49+
pytest.param(
50+
"2018-12-31",
51+
IsoDateString(2018, 12, 31),
52+
id="date"
53+
),
54+
pytest.param(
55+
"12:13",
56+
IsoTimeString(12, 13),
57+
id="time"
58+
),
59+
pytest.param(
60+
"04:15:34",
61+
IsoTimeString(4, 15, 34),
62+
id="time_seconds"
63+
),
64+
pytest.param(
65+
"04:15:34.034",
66+
IsoTimeString(4, 15, 34, 34000),
67+
id="time_ms"
68+
),
69+
pytest.param(
70+
"2018-12-04T04:15:34.034000+00:00",
71+
IsoDatetimeString(2018, 12, 4, 4, 15, 34, 34000, tzinfo=datetime.timezone.utc),
72+
id="datetime_full"
73+
),
74+
pytest.param(
75+
"2018-12-04T04:15",
76+
IsoDatetimeString(2018, 12, 4, 4, 15),
77+
id="datetime_partial"
78+
)
79+
]
80+
81+
82+
@pytest.mark.parametrize("value,expected", test_parse_data)
83+
def test_parse(models_generator: MetadataGenerator, value, expected):
84+
cls = models_generator._detect_type(value)
85+
result = cls.to_internal_value(value)
86+
assert result == expected
87+
assert value in result.to_representation()
88+
89+
90+
def test_replace():
91+
assert IsoTimeString(14, 12, 57).replace(minute=58, second=32) == IsoTimeString(14, 58, 32)
92+
assert IsoDateString(2014, 12, 5).replace(day=4, month=5) == IsoDateString(2014, 5, 4)
93+
assert IsoDatetimeString(2014, 12, 5, 14, 12, 57).replace(minute=58, second=32, day=4, month=5) \
94+
== IsoDatetimeString(2014, 5, 4, 14, 58, 32)

0 commit comments

Comments
 (0)