1. from datetime import datetime
    
  2. 
    
  3. from django.template import TemplateSyntaxError
    
  4. from django.test import SimpleTestCase
    
  5. from django.utils.formats import date_format
    
  6. 
    
  7. from ..utils import setup
    
  8. 
    
  9. 
    
  10. class NowTagTests(SimpleTestCase):
    
  11.     @setup({"now01": '{% now "j n Y" %}'})
    
  12.     def test_now01(self):
    
  13.         """
    
  14.         Simple case
    
  15.         """
    
  16.         output = self.engine.render_to_string("now01")
    
  17.         self.assertEqual(
    
  18.             output,
    
  19.             "%d %d %d"
    
  20.             % (
    
  21.                 datetime.now().day,
    
  22.                 datetime.now().month,
    
  23.                 datetime.now().year,
    
  24.             ),
    
  25.         )
    
  26. 
    
  27.     # Check parsing of locale strings
    
  28.     @setup({"now02": '{% now "DATE_FORMAT" %}'})
    
  29.     def test_now02(self):
    
  30.         output = self.engine.render_to_string("now02")
    
  31.         self.assertEqual(output, date_format(datetime.now()))
    
  32. 
    
  33.     @setup({"now03": "{% now 'j n Y' %}"})
    
  34.     def test_now03(self):
    
  35.         """
    
  36.         #15092 - Also accept simple quotes
    
  37.         """
    
  38.         output = self.engine.render_to_string("now03")
    
  39.         self.assertEqual(
    
  40.             output,
    
  41.             "%d %d %d"
    
  42.             % (
    
  43.                 datetime.now().day,
    
  44.                 datetime.now().month,
    
  45.                 datetime.now().year,
    
  46.             ),
    
  47.         )
    
  48. 
    
  49.     @setup({"now04": "{% now 'DATE_FORMAT' %}"})
    
  50.     def test_now04(self):
    
  51.         output = self.engine.render_to_string("now04")
    
  52.         self.assertEqual(output, date_format(datetime.now()))
    
  53. 
    
  54.     @setup({"now05": "{% now 'j \"n\" Y'%}"})
    
  55.     def test_now05(self):
    
  56.         output = self.engine.render_to_string("now05")
    
  57.         self.assertEqual(
    
  58.             output,
    
  59.             '%d "%d" %d'
    
  60.             % (
    
  61.                 datetime.now().day,
    
  62.                 datetime.now().month,
    
  63.                 datetime.now().year,
    
  64.             ),
    
  65.         )
    
  66. 
    
  67.     @setup({"now06": "{% now \"j 'n' Y\"%}"})
    
  68.     def test_now06(self):
    
  69.         output = self.engine.render_to_string("now06")
    
  70.         self.assertEqual(
    
  71.             output,
    
  72.             "%d '%d' %d"
    
  73.             % (
    
  74.                 datetime.now().day,
    
  75.                 datetime.now().month,
    
  76.                 datetime.now().year,
    
  77.             ),
    
  78.         )
    
  79. 
    
  80.     @setup({"now07": '{% now "j n Y" as N %}-{{N}}-'})
    
  81.     def test_now07(self):
    
  82.         output = self.engine.render_to_string("now07")
    
  83.         self.assertEqual(
    
  84.             output,
    
  85.             "-%d %d %d-"
    
  86.             % (
    
  87.                 datetime.now().day,
    
  88.                 datetime.now().month,
    
  89.                 datetime.now().year,
    
  90.             ),
    
  91.         )
    
  92. 
    
  93.     @setup({"no_args": "{% now %}"})
    
  94.     def test_now_args(self):
    
  95.         with self.assertRaisesMessage(
    
  96.             TemplateSyntaxError, "'now' statement takes one argument"
    
  97.         ):
    
  98.             self.engine.render_to_string("no_args")