diff options
| author | Rudy Mutter <rudy@yetihq.com> | 2014-09-06 13:42:36 -0700 |
|---|---|---|
| committer | Loic Bistuer <loic.bistuer@gmail.com> | 2014-10-09 22:39:17 +0700 |
| commit | e31be40f163e7d478946530acb1068c6deadb845 (patch) | |
| tree | 33aa414c5789e46c1ddcb4d648d16297139ac04e /tests | |
| parent | d8306650071369ee9d7cad71120d13c22e900a10 (diff) | |
[1.7.x] Fixed #23365 -- Added support for timezone-aware datetimes to migrations.
Backport of a407b846b4 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/migrations/test_writer.py | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py index 2b7ceddb2d..0503270ed2 100644 --- a/tests/migrations/test_writer.py +++ b/tests/migrations/test_writer.py @@ -16,7 +16,7 @@ from django.conf import settings from django.utils import datetime_safe, six from django.utils.deconstruct import deconstructible from django.utils.translation import ugettext_lazy as _ -from django.utils.timezone import get_default_timezone +from django.utils.timezone import get_default_timezone, utc, FixedOffset import custom_migration_operations.operations import custom_migration_operations.more_operations @@ -101,8 +101,8 @@ class WriterTests(TestCase): self.assertSerializedEqual(datetime.date.today()) self.assertSerializedEqual(datetime.date.today) self.assertSerializedEqual(datetime.datetime.now().time()) - with self.assertRaises(ValueError): - self.assertSerializedEqual(datetime.datetime(2012, 1, 1, 1, 1, tzinfo=get_default_timezone())) + self.assertSerializedEqual(datetime.datetime(2014, 1, 1, 1, 1, tzinfo=get_default_timezone())) + self.assertSerializedEqual(datetime.datetime(2014, 1, 1, 1, 1, tzinfo=FixedOffset(180))) safe_date = datetime_safe.date(2014, 3, 31) string, imports = MigrationWriter.serialize(safe_date) self.assertEqual(string, repr(datetime.date(2014, 3, 31))) @@ -111,6 +111,10 @@ class WriterTests(TestCase): string, imports = MigrationWriter.serialize(safe_datetime) self.assertEqual(string, repr(datetime.datetime(2014, 3, 31, 16, 4, 31))) self.assertEqual(imports, {'import datetime'}) + timezone_aware_datetime = datetime.datetime(2012, 1, 1, 1, 1, tzinfo=utc) + string, imports = MigrationWriter.serialize(timezone_aware_datetime) + self.assertEqual(string, "datetime.datetime(2012, 1, 1, 1, 1, tzinfo=utc)") + self.assertEqual(imports, {'import datetime', 'from django.utils.timezone import utc'}) # Django fields self.assertSerializedFieldEqual(models.CharField(max_length=255)) self.assertSerializedFieldEqual(models.TextField(null=True, blank=True)) @@ -312,3 +316,22 @@ class WriterTests(TestCase): result['custom_migration_operations'].operations.TestOperation, result['custom_migration_operations'].more_operations.TestOperation ) + + def test_serialize_datetime(self): + """ + #23365 -- Timezone-aware datetimes should be allowed. + """ + # naive datetime + naive_datetime = datetime.datetime(2014, 1, 1, 1, 1) + self.assertEqual(MigrationWriter.serialize_datetime(naive_datetime), + "datetime.datetime(2014, 1, 1, 1, 1)") + + # datetime with utc timezone + utc_datetime = datetime.datetime(2014, 1, 1, 1, 1, tzinfo=utc) + self.assertEqual(MigrationWriter.serialize_datetime(utc_datetime), + "datetime.datetime(2014, 1, 1, 1, 1, tzinfo=utc)") + + # datetime with FixedOffset tzinfo + fixed_offset_datetime = datetime.datetime(2014, 1, 1, 1, 1, tzinfo=FixedOffset(180)) + self.assertEqual(MigrationWriter.serialize_datetime(fixed_offset_datetime), + "datetime.datetime(2013, 12, 31, 22, 1, tzinfo=utc)") |
