mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-03-16 20:00:23 +00:00
explicit timezones
This commit is contained in:
parent
8edd7c00fc
commit
262ac384ac
3 changed files with 36 additions and 36 deletions
|
|
@ -1,4 +1,4 @@
|
|||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
|
||||
import time_machine
|
||||
from django.test import TestCase
|
||||
|
|
@ -9,7 +9,7 @@ from tests.models import DoubleMonitored, Monitored, MonitorWhen, MonitorWhenEmp
|
|||
|
||||
class MonitorFieldTests(TestCase):
|
||||
def setUp(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 10, 0, 0)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 10, 0, 0, tzinfo=timezone.utc)):
|
||||
self.instance = Monitored(name='Charlie')
|
||||
self.created = self.instance.name_changed
|
||||
|
||||
|
|
@ -18,10 +18,10 @@ class MonitorFieldTests(TestCase):
|
|||
self.assertEqual(self.instance.name_changed, self.created)
|
||||
|
||||
def test_save_changed(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 12, 0, 0)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 12, 0, 0, tzinfo=timezone.utc)):
|
||||
self.instance.name = 'Maria'
|
||||
self.instance.save()
|
||||
self.assertEqual(self.instance.name_changed, datetime(2016, 1, 1, 12, 0, 0))
|
||||
self.assertEqual(self.instance.name_changed, datetime(2016, 1, 1, 12, 0, 0, tzinfo=timezone.utc))
|
||||
|
||||
def test_double_save(self):
|
||||
self.instance.name = 'Jose'
|
||||
|
|
@ -40,7 +40,7 @@ class MonitorWhenFieldTests(TestCase):
|
|||
Will record changes only when name is 'Jose' or 'Maria'
|
||||
"""
|
||||
def setUp(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 10, 0, 0)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 10, 0, 0, tzinfo=timezone.utc)):
|
||||
self.instance = MonitorWhen(name='Charlie')
|
||||
self.created = self.instance.name_changed
|
||||
|
||||
|
|
@ -49,16 +49,16 @@ class MonitorWhenFieldTests(TestCase):
|
|||
self.assertEqual(self.instance.name_changed, self.created)
|
||||
|
||||
def test_save_changed_to_Jose(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 12, 0, 0)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 12, 0, 0, tzinfo=timezone.utc)):
|
||||
self.instance.name = 'Jose'
|
||||
self.instance.save()
|
||||
self.assertEqual(self.instance.name_changed, datetime(2016, 1, 1, 12, 0, 0))
|
||||
self.assertEqual(self.instance.name_changed, datetime(2016, 1, 1, 12, 0, 0, tzinfo=timezone.utc))
|
||||
|
||||
def test_save_changed_to_Maria(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 12, 0, 0)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, 12, 0, 0, tzinfo=timezone.utc)):
|
||||
self.instance.name = 'Maria'
|
||||
self.instance.save()
|
||||
self.assertEqual(self.instance.name_changed, datetime(2016, 1, 1, 12, 0, 0))
|
||||
self.assertEqual(self.instance.name_changed, datetime(2016, 1, 1, 12, 0, 0, tzinfo=timezone.utc))
|
||||
|
||||
def test_save_changed_to_Pedro(self):
|
||||
self.instance.name = 'Pedro'
|
||||
|
|
@ -111,7 +111,7 @@ class MonitorDoubleFieldTests(TestCase):
|
|||
|
||||
def test_monitor_still_works_with_deferred_fields_filtered_out_of_save_initial(self):
|
||||
obj = DoubleMonitored.objects.defer('name').get(name='Charlie')
|
||||
with time_machine.travel("2016-12-01"):
|
||||
with time_machine.travel(datetime(2016, 12, 1, tzinfo=timezone.utc)):
|
||||
obj.name = 'Charlie2'
|
||||
obj.save()
|
||||
self.assertEqual(obj.name_changed, datetime(2016, 12, 1))
|
||||
self.assertEqual(obj.name_changed, datetime(2016, 12, 1, tzinfo=timezone.utc))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
|
||||
import time_machine
|
||||
from django.test.testcases import TestCase
|
||||
|
|
@ -43,14 +43,14 @@ class StatusModelTests(TestCase):
|
|||
accordingly when update_fields is used as an argument
|
||||
and status_changed is provided
|
||||
'''
|
||||
with time_machine.travel(datetime(2020, 1, 1)):
|
||||
with time_machine.travel(datetime(2020, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = Status.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2020, 1, 2)):
|
||||
with time_machine.travel(datetime(2020, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.status = Status.on_hold
|
||||
t1.save(update_fields=['status', 'status_changed'])
|
||||
|
||||
self.assertEqual(t1.status_changed, datetime(2020, 1, 2))
|
||||
self.assertEqual(t1.status_changed, datetime(2020, 1, 2, tzinfo=timezone.utc))
|
||||
|
||||
def test_save_with_update_fields_overrides_status_changed_not_provided(self):
|
||||
'''
|
||||
|
|
@ -58,14 +58,14 @@ class StatusModelTests(TestCase):
|
|||
accordingly when update_fields is used as an argument
|
||||
with status and status_changed is not provided
|
||||
'''
|
||||
with time_machine.travel(datetime(2020, 1, 1)):
|
||||
with time_machine.travel(datetime(2020, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = Status.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2020, 1, 2)):
|
||||
with time_machine.travel(datetime(2020, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.status = Status.on_hold
|
||||
t1.save(update_fields=['status'])
|
||||
|
||||
self.assertEqual(t1.status_changed, datetime(2020, 1, 2))
|
||||
self.assertEqual(t1.status_changed, datetime(2020, 1, 2, tzinfo=timezone.utc))
|
||||
|
||||
|
||||
class StatusModelPlainTupleTests(StatusModelTests):
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
import time_machine
|
||||
from django.test import TestCase
|
||||
|
|
@ -8,9 +8,9 @@ from tests.models import TimeStamp, TimeStampWithStatusModel
|
|||
|
||||
class TimeStampedModelTests(TestCase):
|
||||
def test_created(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = TimeStamp.objects.create()
|
||||
self.assertEqual(t1.created, datetime(2016, 1, 1))
|
||||
self.assertEqual(t1.created, datetime(2016, 1, 1, tzinfo=timezone.utc))
|
||||
|
||||
def test_created_sets_modified(self):
|
||||
'''
|
||||
|
|
@ -20,13 +20,13 @@ class TimeStampedModelTests(TestCase):
|
|||
self.assertEqual(t1.created, t1.modified)
|
||||
|
||||
def test_modified(self):
|
||||
with time_machine.travel(datetime(2016, 1, 1)):
|
||||
with time_machine.travel(datetime(2016, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = TimeStamp.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2016, 1, 2)):
|
||||
with time_machine.travel(datetime(2016, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.save()
|
||||
|
||||
self.assertEqual(t1.modified, datetime(2016, 1, 2))
|
||||
self.assertEqual(t1.modified, datetime(2016, 1, 2, tzinfo=timezone.utc))
|
||||
|
||||
def test_overriding_created_via_object_creation_also_uses_creation_date_for_modified(self):
|
||||
"""
|
||||
|
|
@ -104,12 +104,12 @@ class TimeStampedModelTests(TestCase):
|
|||
|
||||
for update_fields in tests:
|
||||
with self.subTest(update_fields=update_fields):
|
||||
with time_machine.travel(datetime(2020, 1, 1)):
|
||||
with time_machine.travel(datetime(2020, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = TimeStamp.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2020, 1, 2)):
|
||||
with time_machine.travel(datetime(2020, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.save(update_fields=update_fields)
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 2))
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 2, tzinfo=timezone.utc))
|
||||
|
||||
def test_save_is_skipped_for_empty_update_fields_iterable(self):
|
||||
tests = (
|
||||
|
|
@ -120,31 +120,31 @@ class TimeStampedModelTests(TestCase):
|
|||
|
||||
for update_fields in tests:
|
||||
with self.subTest(update_fields=update_fields):
|
||||
with time_machine.travel(datetime(2020, 1, 1)):
|
||||
with time_machine.travel(datetime(2020, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = TimeStamp.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2020, 1, 2)):
|
||||
with time_machine.travel(datetime(2020, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.test_field = 1
|
||||
t1.save(update_fields=update_fields)
|
||||
|
||||
t1.refresh_from_db()
|
||||
self.assertEqual(t1.test_field, 0)
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 1))
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 1, tzinfo=timezone.utc))
|
||||
|
||||
def test_save_updates_modified_value_when_update_fields_explicitly_set_to_none(self):
|
||||
with time_machine.travel(datetime(2020, 1, 1)):
|
||||
with time_machine.travel(datetime(2020, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = TimeStamp.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2020, 1, 2)):
|
||||
with time_machine.travel(datetime(2020, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.save(update_fields=None)
|
||||
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 2))
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 2, tzinfo=timezone.utc))
|
||||
|
||||
def test_model_inherit_timestampmodel_and_statusmodel(self):
|
||||
with time_machine.travel(datetime(2020, 1, 1)):
|
||||
with time_machine.travel(datetime(2020, 1, 1, tzinfo=timezone.utc)):
|
||||
t1 = TimeStampWithStatusModel.objects.create()
|
||||
|
||||
with time_machine.travel(datetime(2020, 1, 2)):
|
||||
with time_machine.travel(datetime(2020, 1, 2, tzinfo=timezone.utc)):
|
||||
t1.save(update_fields=['test_field', 'status'])
|
||||
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 2))
|
||||
self.assertEqual(t1.modified, datetime(2020, 1, 2, tzinfo=timezone.utc))
|
||||
|
|
|
|||
Loading…
Reference in a new issue