@@ -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