1
- import time
2
1
from decimal import Decimal
3
2
4
3
from django .core .exceptions import ValidationError
@@ -32,12 +31,9 @@ def test_validate(self):
32
31
33
32
34
33
class 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 )
41
37
42
38
def test_save_load (self ):
43
39
EmbeddedModelFieldModel .objects .create (simple = EmbeddedModel (someint = "5" ))
@@ -60,23 +56,20 @@ def test_save_load_null(self):
60
56
61
57
def test_pre_save (self ):
62
58
"""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.
65
64
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.
75
69
obj = EmbeddedModelFieldModel .objects .get ()
76
70
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 )
80
73
81
74
def test_error_messages (self ):
82
75
msg = (
0 commit comments