mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
f0c06f8ab7
Co-Authored-By: Michael Howitz <mh@gocept.com>
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
from django.db import connection
|
|
from django.db.models import TextField
|
|
from django.db.models.functions import Cast, Now
|
|
from django.test import TestCase
|
|
from django.utils import timezone
|
|
|
|
from ..models import Article
|
|
|
|
lorem_ipsum = """
|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
|
|
tempor incididunt ut labore et dolore magna aliqua."""
|
|
|
|
|
|
class NowTests(TestCase):
|
|
def test_basic(self):
|
|
a1 = Article.objects.create(
|
|
title="How to Django",
|
|
text=lorem_ipsum,
|
|
written=timezone.now(),
|
|
)
|
|
a2 = Article.objects.create(
|
|
title="How to Time Travel",
|
|
text=lorem_ipsum,
|
|
written=timezone.now(),
|
|
)
|
|
num_updated = Article.objects.filter(id=a1.id, published=None).update(
|
|
published=Now()
|
|
)
|
|
self.assertEqual(num_updated, 1)
|
|
num_updated = Article.objects.filter(id=a1.id, published=None).update(
|
|
published=Now()
|
|
)
|
|
self.assertEqual(num_updated, 0)
|
|
a1.refresh_from_db()
|
|
self.assertIsInstance(a1.published, datetime)
|
|
a2.published = Now() + timedelta(days=2)
|
|
a2.save()
|
|
a2.refresh_from_db()
|
|
self.assertIsInstance(a2.published, datetime)
|
|
self.assertQuerySetEqual(
|
|
Article.objects.filter(published__lte=Now()),
|
|
["How to Django"],
|
|
lambda a: a.title,
|
|
)
|
|
self.assertQuerySetEqual(
|
|
Article.objects.filter(published__gt=Now()),
|
|
["How to Time Travel"],
|
|
lambda a: a.title,
|
|
)
|
|
|
|
def test_microseconds(self):
|
|
Article.objects.create(
|
|
title="How to Django",
|
|
text=lorem_ipsum,
|
|
written=timezone.now(),
|
|
)
|
|
now_string = (
|
|
Article.objects.annotate(now_string=Cast(Now(), TextField()))
|
|
.get()
|
|
.now_string
|
|
)
|
|
precision = connection.features.time_cast_precision
|
|
self.assertRegex(now_string, rf"^.*\.\d{{1,{precision}}}")
|