@@ -18,74 +18,77 @@ def setUpTestData(cls):
18
18
cls .t4 = Tag .objects .create (name = "t4" , parent = cls .t3 , group_id = cls .group_id_obj_2 )
19
19
cls .t5 = Tag .objects .create (name = "t5" , parent = cls .t3 )
20
20
21
- def test_filter_group_id_is_null (self ):
21
+ def test_filter_group_id_is_null_false (self ):
22
22
"""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 ])
45
54
46
55
def test_filter_group_id_equal_subquery (self ):
47
56
"""Filter by group_id using a subquery"""
48
57
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 ])
53
60
54
61
def test_filter_group_id_in_subquery (self ):
55
62
"""Filter by group_id using a subquery with multiple values"""
56
63
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 ])
89
92
90
93
def test_invalid_object_id (self ):
91
94
"""Test invalid value in filter"""
0 commit comments