1. from datetime import datetime, timedelta
    
  2. 
    
  3. from django.db.models.functions import Now
    
  4. from django.test import TestCase
    
  5. from django.utils import timezone
    
  6. 
    
  7. from ..models import Article
    
  8. 
    
  9. lorem_ipsum = """
    
  10.     Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
    
  11.     tempor incididunt ut labore et dolore magna aliqua."""
    
  12. 
    
  13. 
    
  14. class NowTests(TestCase):
    
  15.     def test_basic(self):
    
  16.         a1 = Article.objects.create(
    
  17.             title="How to Django",
    
  18.             text=lorem_ipsum,
    
  19.             written=timezone.now(),
    
  20.         )
    
  21.         a2 = Article.objects.create(
    
  22.             title="How to Time Travel",
    
  23.             text=lorem_ipsum,
    
  24.             written=timezone.now(),
    
  25.         )
    
  26.         num_updated = Article.objects.filter(id=a1.id, published=None).update(
    
  27.             published=Now()
    
  28.         )
    
  29.         self.assertEqual(num_updated, 1)
    
  30.         num_updated = Article.objects.filter(id=a1.id, published=None).update(
    
  31.             published=Now()
    
  32.         )
    
  33.         self.assertEqual(num_updated, 0)
    
  34.         a1.refresh_from_db()
    
  35.         self.assertIsInstance(a1.published, datetime)
    
  36.         a2.published = Now() + timedelta(days=2)
    
  37.         a2.save()
    
  38.         a2.refresh_from_db()
    
  39.         self.assertIsInstance(a2.published, datetime)
    
  40.         self.assertQuerysetEqual(
    
  41.             Article.objects.filter(published__lte=Now()),
    
  42.             ["How to Django"],
    
  43.             lambda a: a.title,
    
  44.         )
    
  45.         self.assertQuerysetEqual(
    
  46.             Article.objects.filter(published__gt=Now()),
    
  47.             ["How to Time Travel"],
    
  48.             lambda a: a.title,
    
  49.         )