Skip to content

Commit 6b1c54f

Browse files
Andy Babicgasman
authored andcommitted
Add date transformation tests for values() and values_list()
1 parent 4c99432 commit 6b1c54f

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

tests/tests/test_cluster.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,74 @@ def test_date_filters(self):
642642
"one person died"
643643
)
644644

645+
def test_datetime_derivatives_with_values(self):
646+
logs = FakeQuerySet(Log, [
647+
Log(time=datetime.datetime(1979, 7, 1, 1, 1, 1), data="nobody died"),
648+
Log(time=datetime.datetime(1980, 2, 2, 2, 2, 2), data="one person died"),
649+
Log(time=None, data="nothing happened")
650+
])
651+
652+
self.assertEqual(
653+
list(logs.all().values("time__date", "time__time")),
654+
[
655+
{"time__date": datetime.date(1979, 7, 1), "time__time": datetime.time(1, 1, 1)},
656+
{"time__date": datetime.date(1980, 2, 2), "time__time": datetime.time(2, 2, 2)},
657+
{"time__date": None, "time__time": None},
658+
]
659+
)
660+
661+
self.assertEqual(
662+
list(logs.all().values("time__year", "time__iso_year", "time__month", "time__day", "time__hour", "time__minute", "time__second")),
663+
[
664+
{"time__year": 1979, "time__iso_year": 1979, "time__month": 7, "time__day": 1, "time__hour": 1, "time__minute": 1, "time__second": 1},
665+
{"time__year": 1980, "time__iso_year": 1980, "time__month": 2, "time__day": 2, "time__hour": 2, "time__minute": 2, "time__second": 2},
666+
{"time__year": None, "time__iso_year": None, "time__month": None, "time__day": None, "time__hour": None, "time__minute": None, "time__second": None}
667+
]
668+
)
669+
670+
self.assertEqual(
671+
list(logs.all().values("time__week", "time__week_day", "time__iso_week_day", "time__quarter")),
672+
[
673+
{"time__week": 26, "time__week_day": 1, "time__iso_week_day": 7, "time__quarter": 3},
674+
{"time__week": 5, "time__week_day": 7, "time__iso_week_day": 6, "time__quarter": 1},
675+
{"time__week": None, "time__week_day": None, "time__iso_week_day": None, "time__quarter": None},
676+
]
677+
)
678+
679+
def test_datetime_derivatives_with_values_list(self):
680+
logs = FakeQuerySet(Log, [
681+
Log(time=datetime.datetime(1979, 7, 1, 1, 1, 1), data="nobody died"),
682+
Log(time=datetime.datetime(1980, 2, 2, 2, 2, 2), data="one person died"),
683+
Log(time=None, data="nothing happened")
684+
])
685+
686+
self.assertEqual(
687+
list(logs.all().values_list("time__date", "time__time")),
688+
[
689+
(datetime.date(1979, 7, 1), datetime.time(1, 1, 1)),
690+
(datetime.date(1980, 2, 2), datetime.time(2, 2, 2)),
691+
(None, None),
692+
]
693+
)
694+
695+
self.assertEqual(
696+
list(logs.all().values_list("time__year", "time__iso_year", "time__month", "time__day", "time__hour", "time__minute", "time__second")),
697+
[
698+
(1979, 1979, 7, 1, 1, 1, 1),
699+
(1980, 1980, 2, 2, 2, 2, 2),
700+
(None, None, None, None, None, None, None),
701+
]
702+
)
703+
704+
self.assertEqual(
705+
list(logs.all().values_list("time__week", "time__week_day", "time__iso_week_day", "time__quarter")),
706+
[
707+
(26, 1, 7, 3),
708+
(5, 7, 6, 1),
709+
(None, None, None, None),
710+
]
711+
)
712+
645713
def test_queryset_filtering_accross_foreignkeys(self):
646714
band = Band(
647715
name="The Beatles",

0 commit comments

Comments
 (0)