@@ -27,28 +27,48 @@ def resolve_time(self, info, _at=None):
27
27
schema = Schema (query = Query )
28
28
29
29
30
- def test_datetime_query ():
31
- now = datetime .datetime .now ().replace (tzinfo = pytz .utc )
32
- isoformat = now .isoformat ()
30
+ @pytest .fixture
31
+ def sample_datetime ():
32
+ utc_datetime = datetime .datetime (2019 , 5 , 25 , 5 , 30 , 15 , 10 , pytz .utc )
33
+ return utc_datetime
34
+
35
+
36
+ @pytest .fixture
37
+ def sample_time (sample_datetime ):
38
+ time = datetime .time (
39
+ sample_datetime .hour ,
40
+ sample_datetime .minute ,
41
+ sample_datetime .second ,
42
+ sample_datetime .microsecond ,
43
+ sample_datetime .tzinfo ,
44
+ )
45
+ return time
46
+
47
+
48
+ @pytest .fixture
49
+ def sample_date (sample_datetime ):
50
+ date = sample_datetime .date ()
51
+ return date
52
+
53
+
54
+ def test_datetime_query (sample_datetime ):
55
+ isoformat = sample_datetime .isoformat ()
33
56
34
57
result = schema .execute ("""{ datetime(in: "%s") }""" % isoformat )
35
58
assert not result .errors
36
59
assert result .data == {"datetime" : isoformat }
37
60
38
61
39
- def test_date_query ():
40
- now = datetime .datetime .now ().replace (tzinfo = pytz .utc ).date ()
41
- isoformat = now .isoformat ()
62
+ def test_date_query (sample_date ):
63
+ isoformat = sample_date .isoformat ()
42
64
43
65
result = schema .execute ("""{ date(in: "%s") }""" % isoformat )
44
66
assert not result .errors
45
67
assert result .data == {"date" : isoformat }
46
68
47
69
48
- def test_time_query ():
49
- now = datetime .datetime .now ().replace (tzinfo = pytz .utc )
50
- time = datetime .time (now .hour , now .minute , now .second , now .microsecond , now .tzinfo )
51
- isoformat = time .isoformat ()
70
+ def test_time_query (sample_time ):
71
+ isoformat = sample_time .isoformat ()
52
72
53
73
result = schema .execute ("""{ time(at: "%s") }""" % isoformat )
54
74
assert not result .errors
@@ -85,14 +105,13 @@ def test_bad_time_query():
85
105
assert result .data is None
86
106
87
107
88
- def test_datetime_query_variable ():
89
- now = datetime .datetime .now ().replace (tzinfo = pytz .utc )
90
- isoformat = now .isoformat ()
108
+ def test_datetime_query_variable (sample_datetime ):
109
+ isoformat = sample_datetime .isoformat ()
91
110
92
111
# test datetime variable provided as Python datetime
93
112
result = schema .execute (
94
113
"""query Test($date: DateTime){ datetime(in: $date) }""" ,
95
- variables = {"date" : now },
114
+ variables = {"date" : sample_datetime },
96
115
)
97
116
assert not result .errors
98
117
assert result .data == {"datetime" : isoformat }
@@ -106,13 +125,13 @@ def test_datetime_query_variable():
106
125
assert result .data == {"datetime" : isoformat }
107
126
108
127
109
- def test_date_query_variable ():
110
- now = datetime .datetime .now ().replace (tzinfo = pytz .utc ).date ()
111
- isoformat = now .isoformat ()
128
+ def test_date_query_variable (sample_date ):
129
+ isoformat = sample_date .isoformat ()
112
130
113
131
# test date variable provided as Python date
114
132
result = schema .execute (
115
- """query Test($date: Date){ date(in: $date) }""" , variables = {"date" : now }
133
+ """query Test($date: Date){ date(in: $date) }""" ,
134
+ variables = {"date" : sample_date },
116
135
)
117
136
assert not result .errors
118
137
assert result .data == {"date" : isoformat }
@@ -125,14 +144,13 @@ def test_date_query_variable():
125
144
assert result .data == {"date" : isoformat }
126
145
127
146
128
- def test_time_query_variable ():
129
- now = datetime .datetime .now ().replace (tzinfo = pytz .utc )
130
- time = datetime .time (now .hour , now .minute , now .second , now .microsecond , now .tzinfo )
131
- isoformat = time .isoformat ()
147
+ def test_time_query_variable (sample_time ):
148
+ isoformat = sample_time .isoformat ()
132
149
133
150
# test time variable provided as Python time
134
151
result = schema .execute (
135
- """query Test($time: Time){ time(at: $time) }""" , variables = {"time" : time }
152
+ """query Test($time: Time){ time(at: $time) }""" ,
153
+ variables = {"time" : sample_time },
136
154
)
137
155
assert not result .errors
138
156
assert result .data == {"time" : isoformat }
@@ -148,11 +166,13 @@ def test_time_query_variable():
148
166
@pytest .mark .xfail (
149
167
reason = "creating the error message fails when un-parsable object is not JSON serializable."
150
168
)
151
- def test_bad_variables ():
152
- def _test_bad_variables (type , input ):
169
+ def test_bad_variables (sample_date , sample_datetime , sample_time ):
170
+ def _test_bad_variables (type_ , input_ ):
153
171
result = schema .execute (
154
- """query Test($input: {}){{ {}(in: $input) }}""" .format (type , type .lower ()),
155
- variables = {"input" : input },
172
+ """query Test($input: {}){{ {}(in: $input) }}""" .format (
173
+ type_ , type_ .lower ()
174
+ ),
175
+ variables = {"input" : input_ },
156
176
)
157
177
assert len (result .errors ) == 1
158
178
# when `input` is not JSON serializable formatting the error message in
@@ -163,9 +183,9 @@ def _test_bad_variables(type, input):
163
183
164
184
not_a_date = dict ()
165
185
not_a_date_str = "Some string that's not a date"
166
- today = datetime . date . today ()
167
- now = datetime . datetime . now (). replace ( tzinfo = pytz . utc )
168
- time = datetime . time ( now . hour , now . minute , now . second , now . microsecond , now . tzinfo )
186
+ today = sample_date
187
+ now = sample_datetime
188
+ time = sample_time
169
189
170
190
bad_pairs = [
171
191
("DateTime" , not_a_date ),
@@ -182,5 +202,5 @@ def _test_bad_variables(type, input):
182
202
("Time" , today ),
183
203
]
184
204
185
- for type , input in bad_pairs :
186
- _test_bad_variables (type , input )
205
+ for type_ , input_ in bad_pairs :
206
+ _test_bad_variables (type_ , input_ )
0 commit comments