Skip to content

Commit 507a026

Browse files
committed
Unfold subtest.
1 parent 3a654dc commit 507a026

File tree

1 file changed

+62
-59
lines changed

1 file changed

+62
-59
lines changed

tests/queries_/test_objectid.py

Lines changed: 62 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -18,74 +18,77 @@ def setUpTestData(cls):
1818
cls.t4 = Tag.objects.create(name="t4", parent=cls.t3, group_id=cls.group_id_obj_2)
1919
cls.t5 = Tag.objects.create(name="t5", parent=cls.t3)
2020

21-
def test_filter_group_id_is_null(self):
21+
def test_filter_group_id_is_null_false(self):
2222
"""Filter objects where group_id is not null"""
23-
for value, expected in [(False, [self.t3, self.t4]), (True, [self.t1, self.t2, self.t5])]:
24-
with self.subTest(object_id=value):
25-
qs = Tag.objects.filter(group_id__isnull=value).order_by("name")
26-
self.assertSequenceEqual(qs, expected)
27-
28-
def test_filter_group_id_equal_value(self):
29-
"""Filter by group_id with a specific value"""
30-
for value in [self.group_id_str_1, self.group_id_obj_1]:
31-
with self.subTest(object_id=value):
32-
qs = Tag.objects.filter(group_id=value).order_by("name")
33-
self.assertSequenceEqual(qs, [self.t3])
34-
35-
def test_filter_group_id_in_value(self):
36-
"""Filter by group_id where value is in a list"""
37-
test_cases = [
38-
[self.group_id_str_1, self.group_id_str_2],
39-
[self.group_id_obj_1, self.group_id_obj_2],
40-
]
41-
for values in test_cases:
42-
with self.subTest(values=values):
43-
qs = Tag.objects.filter(group_id__in=values).order_by("name")
44-
self.assertSequenceEqual(qs, [self.t3, self.t4])
23+
qs = Tag.objects.filter(group_id__isnull=False).order_by("name")
24+
self.assertSequenceEqual(qs, [self.t3, self.t4])
25+
26+
def test_filter_group_id_is_null_true(self):
27+
"""Filter objects where group_id is null"""
28+
qs = Tag.objects.filter(group_id__isnull=True).order_by("name")
29+
self.assertSequenceEqual(qs, [self.t1, self.t2, self.t5])
30+
31+
def test_filter_group_id_equal_str(self):
32+
"""Filter by group_id with a specific string value"""
33+
qs = Tag.objects.filter(group_id=self.group_id_str_1).order_by("name")
34+
self.assertSequenceEqual(qs, [self.t3])
35+
36+
def test_filter_group_id_equal_obj(self):
37+
"""Filter by group_id with a specific ObjectId value"""
38+
qs = Tag.objects.filter(group_id=self.group_id_obj_1).order_by("name")
39+
self.assertSequenceEqual(qs, [self.t3])
40+
41+
def test_filter_group_id_in_str_values(self):
42+
"""Filter by group_id with string values in a list"""
43+
qs = Tag.objects.filter(group_id__in=[self.group_id_str_1, self.group_id_str_2]).order_by(
44+
"name"
45+
)
46+
self.assertSequenceEqual(qs, [self.t3, self.t4])
47+
48+
def test_filter_group_id_in_obj_values(self):
49+
"""Filter by group_id with ObjectId values in a list"""
50+
qs = Tag.objects.filter(group_id__in=[self.group_id_obj_1, self.group_id_obj_2]).order_by(
51+
"name"
52+
)
53+
self.assertSequenceEqual(qs, [self.t3, self.t4])
4554

4655
def test_filter_group_id_equal_subquery(self):
4756
"""Filter by group_id using a subquery"""
4857
subquery = Tag.objects.filter(name="t3").values("group_id")
49-
for value in [self.group_id_str_1, self.group_id_obj_1]:
50-
with self.subTest(object_id=value):
51-
qs = Tag.objects.filter(group_id__in=subquery).order_by("name")
52-
self.assertSequenceEqual(qs, [self.t3])
58+
qs = Tag.objects.filter(group_id__in=subquery).order_by("name")
59+
self.assertSequenceEqual(qs, [self.t3])
5360

5461
def test_filter_group_id_in_subquery(self):
5562
"""Filter by group_id using a subquery with multiple values"""
5663
subquery = Tag.objects.filter(name__in=["t3", "t4"]).values("group_id")
57-
test_cases = [
58-
[self.group_id_str_1, self.group_id_str_2],
59-
[self.group_id_obj_1, self.group_id_obj_2],
60-
]
61-
for values in test_cases:
62-
with self.subTest(values=values):
63-
qs = Tag.objects.filter(group_id__in=subquery).order_by("name")
64-
self.assertSequenceEqual(qs, [self.t3, self.t4])
65-
66-
def test_filter_parent_by_children_values(self):
67-
"""Query to select parents of children based on group_id"""
68-
child_group_ids = [self.group_id_str_1, self.group_id_obj_1]
69-
for group_id in child_group_ids:
70-
with self.subTest(group_id=group_id):
71-
child_ids = Tag.objects.filter(group_id=group_id).values_list("id", flat=True)
72-
parent_qs = (
73-
Tag.objects.filter(children__id__in=child_ids).distinct().order_by("name")
74-
)
75-
self.assertSequenceEqual(parent_qs, [self.t1])
76-
77-
def test_filter_group_id_union_with(self):
78-
"""Combine queries using union"""
79-
test_cases = [
80-
(self.group_id_str_1, self.group_id_str_2),
81-
(self.group_id_obj_1, self.group_id_obj_2),
82-
]
83-
for value1, value2 in test_cases:
84-
with self.subTest(value1=value1, value2=value2):
85-
qs_a = Tag.objects.filter(group_id=value1)
86-
qs_b = Tag.objects.filter(group_id=value2)
87-
union_qs = qs_a.union(qs_b).order_by("name")
88-
self.assertSequenceEqual(union_qs, [self.t3, self.t4])
64+
qs = Tag.objects.filter(group_id__in=subquery).order_by("name")
65+
self.assertSequenceEqual(qs, [self.t3, self.t4])
66+
67+
def test_filter_parent_by_children_values_str(self):
68+
"""Query to select parents of children with specific string group_id"""
69+
child_ids = Tag.objects.filter(group_id=self.group_id_str_1).values_list("id", flat=True)
70+
parent_qs = Tag.objects.filter(children__id__in=child_ids).distinct().order_by("name")
71+
self.assertSequenceEqual(parent_qs, [self.t1])
72+
73+
def test_filter_parent_by_children_values_obj(self):
74+
"""Query to select parents of children with specific ObjectId group_id"""
75+
child_ids = Tag.objects.filter(group_id=self.group_id_obj_1).values_list("id", flat=True)
76+
parent_qs = Tag.objects.filter(children__id__in=child_ids).distinct().order_by("name")
77+
self.assertSequenceEqual(parent_qs, [self.t1])
78+
79+
def test_filter_group_id_union_with_str(self):
80+
"""Combine queries using union with string values"""
81+
qs_a = Tag.objects.filter(group_id=self.group_id_str_1)
82+
qs_b = Tag.objects.filter(group_id=self.group_id_str_2)
83+
union_qs = qs_a.union(qs_b).order_by("name")
84+
self.assertSequenceEqual(union_qs, [self.t3, self.t4])
85+
86+
def test_filter_group_id_union_with_obj(self):
87+
"""Combine queries using union with ObjectId values"""
88+
qs_a = Tag.objects.filter(group_id=self.group_id_obj_1)
89+
qs_b = Tag.objects.filter(group_id=self.group_id_obj_2)
90+
union_qs = qs_a.union(qs_b).order_by("name")
91+
self.assertSequenceEqual(union_qs, [self.t3, self.t4])
8992

9093
def test_invalid_object_id(self):
9194
"""Test invalid value in filter"""

0 commit comments

Comments
 (0)