diff --git a/tests/db_functions/datetime/__init__.py b/tests/db_functions/datetime/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/db_functions/test_datetime.py b/tests/db_functions/datetime/test_extract_trunc.py similarity index 99% rename from tests/db_functions/test_datetime.py rename to tests/db_functions/datetime/test_extract_trunc.py index 07b6b0438a..077690630b 100644 --- a/tests/db_functions/test_datetime.py +++ b/tests/db_functions/datetime/test_extract_trunc.py @@ -17,7 +17,7 @@ from django.test import ( ) from django.utils import timezone -from .models import Author, DTModel, Fan +from ..models import Author, DTModel, Fan def truncate_to(value, kind, tzinfo=None): diff --git a/tests/db_functions/datetime/test_now.py b/tests/db_functions/datetime/test_now.py new file mode 100644 index 0000000000..d7b43609b2 --- /dev/null +++ b/tests/db_functions/datetime/test_now.py @@ -0,0 +1,46 @@ +from datetime import datetime, timedelta + +from django.db.models.functions import 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 + ) diff --git a/tests/db_functions/tests.py b/tests/db_functions/tests.py index 746fa0e1fb..9c06735377 100644 --- a/tests/db_functions/tests.py +++ b/tests/db_functions/tests.py @@ -1,15 +1,8 @@ -from datetime import datetime, timedelta - from django.db.models import CharField, Value as V -from django.db.models.functions import Coalesce, Length, Now, Upper +from django.db.models.functions import Coalesce, Length, Upper from django.test import TestCase -from django.utils import timezone -from .models import Article, Author - -lorem_ipsum = """ - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod - tempor incididunt ut labore et dolore magna aliqua.""" +from .models import Author class FunctionTests(TestCase): @@ -36,43 +29,6 @@ class FunctionTests(TestCase): lambda a: a.name ) - def test_now(self): - ar1 = Article.objects.create( - title='How to Django', - text=lorem_ipsum, - written=timezone.now(), - ) - ar2 = Article.objects.create( - title='How to Time Travel', - text=lorem_ipsum, - written=timezone.now(), - ) - - num_updated = Article.objects.filter(id=ar1.id, published=None).update(published=Now()) - self.assertEqual(num_updated, 1) - - num_updated = Article.objects.filter(id=ar1.id, published=None).update(published=Now()) - self.assertEqual(num_updated, 0) - - ar1.refresh_from_db() - self.assertIsInstance(ar1.published, datetime) - - ar2.published = Now() + timedelta(days=2) - ar2.save() - ar2.refresh_from_db() - self.assertIsInstance(ar2.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_func_transform_bilateral(self): class UpperBilateral(Upper): bilateral = True