1. import datetime
    
  2. 
    
  3. from django.test import TestCase
    
  4. 
    
  5. from .models import Thing
    
  6. 
    
  7. 
    
  8. class ReservedNameTests(TestCase):
    
  9.     def generate(self):
    
  10.         day1 = datetime.date(2005, 1, 1)
    
  11.         Thing.objects.create(
    
  12.             when="a",
    
  13.             join="b",
    
  14.             like="c",
    
  15.             drop="d",
    
  16.             alter="e",
    
  17.             having="f",
    
  18.             where=day1,
    
  19.             has_hyphen="h",
    
  20.         )
    
  21.         day2 = datetime.date(2006, 2, 2)
    
  22.         Thing.objects.create(
    
  23.             when="h",
    
  24.             join="i",
    
  25.             like="j",
    
  26.             drop="k",
    
  27.             alter="l",
    
  28.             having="m",
    
  29.             where=day2,
    
  30.         )
    
  31. 
    
  32.     def test_simple(self):
    
  33.         day1 = datetime.date(2005, 1, 1)
    
  34.         t = Thing.objects.create(
    
  35.             when="a",
    
  36.             join="b",
    
  37.             like="c",
    
  38.             drop="d",
    
  39.             alter="e",
    
  40.             having="f",
    
  41.             where=day1,
    
  42.             has_hyphen="h",
    
  43.         )
    
  44.         self.assertEqual(t.when, "a")
    
  45. 
    
  46.         day2 = datetime.date(2006, 2, 2)
    
  47.         u = Thing.objects.create(
    
  48.             when="h",
    
  49.             join="i",
    
  50.             like="j",
    
  51.             drop="k",
    
  52.             alter="l",
    
  53.             having="m",
    
  54.             where=day2,
    
  55.         )
    
  56.         self.assertEqual(u.when, "h")
    
  57. 
    
  58.     def test_order_by(self):
    
  59.         self.generate()
    
  60.         things = [t.when for t in Thing.objects.order_by("when")]
    
  61.         self.assertEqual(things, ["a", "h"])
    
  62. 
    
  63.     def test_fields(self):
    
  64.         self.generate()
    
  65.         v = Thing.objects.get(pk="a")
    
  66.         self.assertEqual(v.join, "b")
    
  67.         self.assertEqual(v.where, datetime.date(year=2005, month=1, day=1))
    
  68. 
    
  69.     def test_dates(self):
    
  70.         self.generate()
    
  71.         resp = Thing.objects.dates("where", "year")
    
  72.         self.assertEqual(
    
  73.             list(resp),
    
  74.             [
    
  75.                 datetime.date(2005, 1, 1),
    
  76.                 datetime.date(2006, 1, 1),
    
  77.             ],
    
  78.         )
    
  79. 
    
  80.     def test_month_filter(self):
    
  81.         self.generate()
    
  82.         self.assertEqual(Thing.objects.filter(where__month=1)[0].when, "a")