diff options
| author | Adam Chainz <adam@adamj.eu> | 2015-06-01 18:00:34 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-15 14:03:17 -0400 |
| commit | d34d39ade76e6b67299d8d88a7e5a2278a793dc3 (patch) | |
| tree | 60b65b404ce1e901eecb65fc7de3f99817d080ad /tests | |
| parent | 3872a33132a4bb6aa22b237927597bbfdf6f21d7 (diff) | |
Fixed #24894 -- Added contrib.postgres.functions.TransactionNow
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/postgres_tests/migrations/0002_create_test_models.py | 7 | ||||
| -rw-r--r-- | tests/postgres_tests/models.py | 4 | ||||
| -rw-r--r-- | tests/postgres_tests/test_functions.py | 28 |
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) |
