MCPcopy Index your code
hub / github.com/mongodb/mongo-python-driver / test_datetime

Method test_datetime

test/test_json_util.py:122–255  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

120 )
121
122 def test_datetime(self):
123 tz_aware_opts = json_util.DEFAULT_JSON_OPTIONS.with_options(tz_aware=True)
124 # only millis, not micros
125 self.round_trip(
126 {"date": datetime.datetime(2009, 12, 9, 15, 49, 45, 191000, utc)},
127 json_options=tz_aware_opts,
128 )
129 self.round_trip({"date": datetime.datetime(2009, 12, 9, 15, 49, 45, 191000)})
130
131 for jsn in [
132 '{"dt": { "$date" : "1970-01-01T00:00:00.000+0000"}}',
133 '{"dt": { "$date" : "1970-01-01T00:00:00.000000+0000"}}',
134 '{"dt": { "$date" : "1970-01-01T00:00:00.000+00:00"}}',
135 '{"dt": { "$date" : "1970-01-01T00:00:00.000000+00:00"}}',
136 '{"dt": { "$date" : "1970-01-01T00:00:00.000000+00"}}',
137 '{"dt": { "$date" : "1970-01-01T00:00:00.000Z"}}',
138 '{"dt": { "$date" : "1970-01-01T00:00:00.000000Z"}}',
139 '{"dt": { "$date" : "1970-01-01T00:00:00Z"}}',
140 '{"dt": { "$date" : "1970-01-01T00:00:00.000"}}',
141 '{"dt": { "$date" : "1970-01-01T00:00:00"}}',
142 '{"dt": { "$date" : "1970-01-01T00:00:00.000000"}}',
143 '{"dt": { "$date" : "1969-12-31T16:00:00.000-0800"}}',
144 '{"dt": { "$date" : "1969-12-31T16:00:00.000000-0800"}}',
145 '{"dt": { "$date" : "1969-12-31T16:00:00.000-08:00"}}',
146 '{"dt": { "$date" : "1969-12-31T16:00:00.000000-08:00"}}',
147 '{"dt": { "$date" : "1969-12-31T16:00:00.000000-08"}}',
148 '{"dt": { "$date" : "1970-01-01T01:00:00.000+0100"}}',
149 '{"dt": { "$date" : "1970-01-01T01:00:00.000000+0100"}}',
150 '{"dt": { "$date" : "1970-01-01T01:00:00.000+01:00"}}',
151 '{"dt": { "$date" : "1970-01-01T01:00:00.000000+01:00"}}',
152 '{"dt": { "$date" : "1970-01-01T01:00:00.000000+01"}}',
153 ]:
154 self.assertEqual(EPOCH_AWARE, json_util.loads(jsn, json_options=tz_aware_opts)["dt"])
155 self.assertEqual(EPOCH_NAIVE, json_util.loads(jsn)["dt"])
156
157 dtm = datetime.datetime(1, 1, 1, 1, 1, 1, 0, utc)
158 jsn = '{"dt": {"$date": -62135593139000}}'
159 self.assertEqual(dtm, json_util.loads(jsn, json_options=tz_aware_opts)["dt"])
160 jsn = '{"dt": {"$date": {"$numberLong": "-62135593139000"}}}'
161 self.assertEqual(dtm, json_util.loads(jsn, json_options=tz_aware_opts)["dt"])
162
163 # Test dumps format
164 pre_epoch = {"dt": datetime.datetime(1, 1, 1, 1, 1, 1, 10000, utc)}
165 post_epoch = {"dt": datetime.datetime(1972, 1, 1, 1, 1, 1, 10000, utc)}
166 self.assertEqual(
167 '{"dt": {"$date": {"$numberLong": "-62135593138990"}}}', json_util.dumps(pre_epoch)
168 )
169 self.assertEqual(
170 '{"dt": {"$date": "1972-01-01T01:01:01.010Z"}}', json_util.dumps(post_epoch)
171 )
172 self.assertEqual(
173 '{"dt": {"$date": -62135593138990}}',
174 json_util.dumps(pre_epoch, json_options=LEGACY_JSON_OPTIONS),
175 )
176 self.assertEqual(
177 '{"dt": {"$date": 63075661010}}',
178 json_util.dumps(post_epoch, json_options=LEGACY_JSON_OPTIONS),
179 )

Callers

nothing calls this directly

Calls 4

round_tripMethod · 0.95
JSONOptionsClass · 0.90
FixedOffsetClass · 0.90
with_optionsMethod · 0.45

Tested by

no test coverage detected