summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRudy Mutter <rudy@yetihq.com>2014-09-06 13:42:36 -0700
committerLoic Bistuer <loic.bistuer@gmail.com>2014-10-09 22:39:17 +0700
commite31be40f163e7d478946530acb1068c6deadb845 (patch)
tree33aa414c5789e46c1ddcb4d648d16297139ac04e /tests
parentd8306650071369ee9d7cad71120d13c22e900a10 (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.py29
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)")