1- import time
21from decimal import Decimal
32
43from django .core .exceptions import ValidationError
@@ -32,12 +31,9 @@ def test_validate(self):
3231
3332
3433class QueryingTests (TestCase ):
35- def assertEqualDatetime (self , d1 , d2 ):
36- """Compare d1 and d2, ignoring microseconds."""
37- self .assertEqual (d1 .replace (microsecond = 0 ), d2 .replace (microsecond = 0 ))
38-
39- def assertNotEqualDatetime (self , d1 , d2 ):
40- self .assertNotEqual (d1 .replace (microsecond = 0 ), d2 .replace (microsecond = 0 ))
34+ def truncate_ms (self , value ):
35+ """Truncate microsends to millisecond precision as supported by MongoDB."""
36+ return value .replace (microsecond = (value .microsecond // 1000 ) * 1000 )
4137
4238 def test_save_load (self ):
4339 EmbeddedModelFieldModel .objects .create (simple = EmbeddedModel (someint = "5" ))
@@ -60,23 +56,20 @@ def test_save_load_null(self):
6056
6157 def test_pre_save (self ):
6258 """Field.pre_save() is called on embedded model fields."""
63- obj = EmbeddedModelFieldModel (simple = EmbeddedModel ())
64-
59+ obj = EmbeddedModelFieldModel .objects .create (simple = EmbeddedModel ())
60+ auto_now = self .truncate_ms (obj .simple .auto_now )
61+ auto_now_add = self .truncate_ms (obj .simple .auto_now_add )
62+ self .assertEqual (auto_now , auto_now_add )
63+ # save() updates auto_now but not auto_now_add.
6564 obj .save ()
66- auto_now = obj .simple .auto_now
67- auto_now_add = obj .simple .auto_now_add
68- self .assertNotEqual (auto_now , None )
69- self .assertNotEqual (auto_now_add , None )
70-
71- time .sleep (1 ) # FIXME
72- obj .save ()
73- self .assertNotEqualDatetime (obj .simple .auto_now , obj .simple .auto_now_add )
74-
65+ self .assertEqual (self .truncate_ms (obj .simple .auto_now_add ), auto_now_add )
66+ auto_now_two = obj .simple .auto_now
67+ self .assertGreater (auto_now_two , obj .simple .auto_now_add )
68+ # And again, save() updates auto_now but not auto_now_add.
7569 obj = EmbeddedModelFieldModel .objects .get ()
7670 obj .save ()
77- # auto_now_add shouldn't have changed now, but auto_now should.
78- self .assertEqualDatetime (obj .simple .auto_now_add , auto_now_add )
79- self .assertGreater (obj .simple .auto_now , auto_now )
71+ self .assertEqual (obj .simple .auto_now_add , auto_now_add )
72+ self .assertGreater (obj .simple .auto_now , auto_now_two )
8073
8174 def test_error_messages (self ):
8275 msg = (
0 commit comments