summaryrefslogtreecommitdiff
path: root/tests/postgres_tests
diff options
context:
space:
mode:
authorAdam Chainz <adam@adamj.eu>2015-06-01 18:00:34 +0100
committerTim Graham <timograham@gmail.com>2015-06-15 14:03:17 -0400
commitd34d39ade76e6b67299d8d88a7e5a2278a793dc3 (patch)
tree60b65b404ce1e901eecb65fc7de3f99817d080ad /tests/postgres_tests
parent3872a33132a4bb6aa22b237927597bbfdf6f21d7 (diff)
Fixed #24894 -- Added contrib.postgres.functions.TransactionNow
Diffstat (limited to 'tests/postgres_tests')
-rw-r--r--tests/postgres_tests/migrations/0002_create_test_models.py7
-rw-r--r--tests/postgres_tests/models.py4
-rw-r--r--tests/postgres_tests/test_functions.py28
3 files changed, 39 insertions, 0 deletions
diff --git a/tests/postgres_tests/migrations/0002_create_test_models.py b/tests/postgres_tests/migrations/0002_create_test_models.py
index f1d06cc2d9..c8fe842397 100644
--- a/tests/postgres_tests/migrations/0002_create_test_models.py
+++ b/tests/postgres_tests/migrations/0002_create_test_models.py
@@ -130,6 +130,13 @@ class Migration(migrations.Migration):
('related_field', models.ForeignKey('postgres_tests.AggregateTestModel', null=True)),
]
),
+ migrations.CreateModel(
+ name='NowTestModel',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('when', models.DateTimeField(null=True, default=None)),
+ ]
+ ),
]
pg_92_operations = [
diff --git a/tests/postgres_tests/models.py b/tests/postgres_tests/models.py
index bef77b7b21..4233092c79 100644
--- a/tests/postgres_tests/models.py
+++ b/tests/postgres_tests/models.py
@@ -109,3 +109,7 @@ class StatTestModel(models.Model):
int1 = models.IntegerField()
int2 = models.IntegerField()
related_field = models.ForeignKey(AggregateTestModel, null=True)
+
+
+class NowTestModel(models.Model):
+ when = models.DateTimeField(null=True, default=None)
diff --git a/tests/postgres_tests/test_functions.py b/tests/postgres_tests/test_functions.py
new file mode 100644
index 0000000000..620b561325
--- /dev/null
+++ b/tests/postgres_tests/test_functions.py
@@ -0,0 +1,28 @@
+from datetime import datetime
+from time import sleep
+
+from django.contrib.postgres.functions import TransactionNow
+
+from . import PostgreSQLTestCase
+from .models import NowTestModel
+
+
+class TestTransactionNow(PostgreSQLTestCase):
+
+ def test_transaction_now(self):
+ """
+ The test case puts everything under a transaction, so two models
+ updated with a short gap should have the same time.
+ """
+ m1 = NowTestModel.objects.create()
+ m2 = NowTestModel.objects.create()
+
+ NowTestModel.objects.filter(id=m1.id).update(when=TransactionNow())
+ sleep(0.1)
+ NowTestModel.objects.filter(id=m2.id).update(when=TransactionNow())
+
+ m1.refresh_from_db()
+ m2.refresh_from_db()
+
+ self.assertIsInstance(m1.when, datetime)
+ self.assertEqual(m1.when, m2.when)