22import uuid
33from datetime import datetime
44from datetime import timedelta
5+ from calendar import timegm
6+ from pytz import utc , timezone
57
68if __name__ == '__main__' :
79 from main import setup_tincan_path
@@ -248,7 +250,7 @@ def test_retrieve_statement(self):
248250 result = self .result ,
249251 id = id_str ,
250252 version = Version .latest ,
251- timestamp = datetime .utcnow ()
253+ timestamp = utc . localize ( datetime .utcnow () )
252254 )
253255 save_resp = self .lrs .save_statement (statement )
254256
@@ -258,15 +260,15 @@ def test_retrieve_statement(self):
258260 self .assertTrue (response .success )
259261 self ._vars_verifier (response .content , statement , ['_authority' , '_stored' ])
260262
261-
262- def test_query_statements ( self ):
263+ def test_query_statements_UTC ( self ):
264+ tstamp = utc . localize ( datetime . utcnow ())
263265 s1 = Statement (
264266 actor = self .agent ,
265267 verb = self .verb ,
266268 object = self .parent ,
267269 result = self .result ,
268270 id = str (uuid .uuid4 ()),
269- timestamp = datetime . utcnow ()
271+ timestamp = tstamp
270272 )
271273 self .lrs .save_statement (s1 )
272274
@@ -276,7 +278,7 @@ def test_query_statements(self):
276278 object = self .parent ,
277279 result = self .result ,
278280 id = str (uuid .uuid4 ()),
279- timestamp = datetime . utcnow ()
281+ timestamp = tstamp
280282 )
281283 self .lrs .save_statement (s2 )
282284
@@ -286,7 +288,7 @@ def test_query_statements(self):
286288 object = self .parent ,
287289 result = self .result ,
288290 id = str (uuid .uuid4 ()),
289- timestamp = datetime . utcnow ()
291+ timestamp = tstamp
290292 )
291293 self .lrs .save_statement (s3 )
292294
@@ -479,6 +481,13 @@ def _vars_verifier(self, obj1, obj2, _ignored_attrs=['_authority', '_stored', '_
479481 for k , v in vars (obj1 ).iteritems ():
480482 if k in _ignored_attrs :
481483 continue
484+ elif isinstance (v , datetime ):
485+ dt1 = getattr (obj1 , k )
486+ dt2 = getattr (obj2 , k )
487+ ts1 = timegm (dt1 .timetuple ())
488+ ts2 = timegm (dt2 .timetuple ())
489+ self .assertEqual (ts1 , ts2 )
490+ self .assertEqual (round (dt1 .microsecond , 3 ), round (dt2 .microsecond , 3 ))
482491 elif isinstance (v , Base ):
483492 self ._vars_verifier (getattr (obj1 , k ), getattr (obj2 , k ))
484493 else :
0 commit comments