Skip to content

Commit c225e3f

Browse files
committed
fix datetime in tests
1 parent d701398 commit c225e3f

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

tests/model_fields_/test_embedded_model.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import time
21
from decimal import Decimal
32

43
from django.core.exceptions import ValidationError
@@ -32,12 +31,9 @@ def test_validate(self):
3231

3332

3433
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)
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

Comments
 (0)