From b523d42561c7832e6d5d7a4a2dcb5fb650b24fb5 Mon Sep 17 00:00:00 2001
From: Nick Pope <nick.pope@flightdataservices.com>
Date: Thu, 16 Aug 2018 01:14:37 +0100
Subject: [PATCH] Reorganized datetime db function tests.

---
 tests/db_functions/datetime/__init__.py       |  0
 .../test_extract_trunc.py}                    |  2 +-
 tests/db_functions/datetime/test_now.py       | 46 ++++++++++++++++++
 tests/db_functions/tests.py                   | 48 +------------------
 4 files changed, 49 insertions(+), 47 deletions(-)
 create mode 100644 tests/db_functions/datetime/__init__.py
 rename tests/db_functions/{test_datetime.py => datetime/test_extract_trunc.py} (99%)
 create mode 100644 tests/db_functions/datetime/test_now.py

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