Reorganized datetime db function tests.

This commit is contained in:
Nick Pope 2018-08-16 01:14:37 +01:00 committed by Tim Graham
parent 5c3db0ef6a
commit b523d42561
4 changed files with 49 additions and 47 deletions

View File

View File

@ -17,7 +17,7 @@ from django.test import (
) )
from django.utils import timezone from django.utils import timezone
from .models import Author, DTModel, Fan from ..models import Author, DTModel, Fan
def truncate_to(value, kind, tzinfo=None): def truncate_to(value, kind, tzinfo=None):

View File

@ -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
)

View File

@ -1,15 +1,8 @@
from datetime import datetime, timedelta
from django.db.models import CharField, Value as V 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.test import TestCase
from django.utils import timezone
from .models import Article, Author from .models import Author
lorem_ipsum = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua."""
class FunctionTests(TestCase): class FunctionTests(TestCase):
@ -36,43 +29,6 @@ class FunctionTests(TestCase):
lambda a: a.name 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): def test_func_transform_bilateral(self):
class UpperBilateral(Upper): class UpperBilateral(Upper):
bilateral = True bilateral = True