mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #24894 -- Added contrib.postgres.functions.TransactionNow
This commit is contained in:
@@ -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 = [
|
||||
|
||||
@@ -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)
|
||||
|
||||
28
tests/postgres_tests/test_functions.py
Normal file
28
tests/postgres_tests/test_functions.py
Normal file
@@ -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)
|
||||
Reference in New Issue
Block a user