@@ -42,3 +42,105 @@ async def test_values_list(self):
42
42
obj0 = await testmodels .ArrayFields .create (array = [0 ])
43
43
values = await testmodels .ArrayFields .get (id = obj0 .id ).values_list ("array" , flat = True )
44
44
self .assertEqual (values , [0 ])
45
+
46
+ async def test_eq_filter (self ):
47
+ obj1 = await testmodels .ArrayFields .create (array = [1 , 2 , 3 ])
48
+ obj2 = await testmodels .ArrayFields .create (array = [1 , 2 ])
49
+
50
+ found = await testmodels .ArrayFields .filter (array = [1 , 2 , 3 ]).first ()
51
+ self .assertEqual (found , obj1 )
52
+
53
+ found = await testmodels .ArrayFields .filter (array = [1 , 2 ]).first ()
54
+ self .assertEqual (found , obj2 )
55
+
56
+ async def test_not_filter (self ):
57
+ await testmodels .ArrayFields .create (array = [1 , 2 , 3 ])
58
+ obj2 = await testmodels .ArrayFields .create (array = [1 , 2 ])
59
+
60
+ found = await testmodels .ArrayFields .filter (array__not = [1 , 2 , 3 ]).first ()
61
+ self .assertEqual (found , obj2 )
62
+
63
+ async def test_contains_ints (self ):
64
+ obj1 = await testmodels .ArrayFields .create (array = [1 , 2 , 3 ])
65
+ obj2 = await testmodels .ArrayFields .create (array = [2 , 3 ])
66
+ await testmodels .ArrayFields .create (array = [4 , 5 , 6 ])
67
+
68
+ found = await testmodels .ArrayFields .filter (array__contains = [2 ])
69
+ self .assertEqual (found , [obj1 , obj2 ])
70
+
71
+ found = await testmodels .ArrayFields .filter (array__contains = [10 ])
72
+ self .assertEqual (found , [])
73
+
74
+ async def test_contains_smallints (self ):
75
+ obj1 = await testmodels .ArrayFields .create (array = [], array_smallint = [1 , 2 , 3 ])
76
+
77
+ found = await testmodels .ArrayFields .filter (array_smallint__contains = [2 ]).first ()
78
+ self .assertEqual (found , obj1 )
79
+
80
+ async def test_contains_strs (self ):
81
+ obj1 = await testmodels .ArrayFields .create (array_str = ["a" , "b" , "c" ], array = [])
82
+
83
+ found = await testmodels .ArrayFields .filter (array_str__contains = ["a" , "b" , "c" ])
84
+ self .assertEqual (found , [obj1 ])
85
+
86
+ found = await testmodels .ArrayFields .filter (array_str__contains = ["a" , "b" ])
87
+ self .assertEqual (found , [obj1 ])
88
+
89
+ found = await testmodels .ArrayFields .filter (array_str__contains = ["a" , "b" , "c" , "d" ])
90
+ self .assertEqual (found , [])
91
+
92
+ async def test_contained_by_ints (self ):
93
+ obj1 = await testmodels .ArrayFields .create (array = [1 ])
94
+ obj2 = await testmodels .ArrayFields .create (array = [1 , 2 ])
95
+ obj3 = await testmodels .ArrayFields .create (array = [1 , 2 , 3 ])
96
+
97
+ found = await testmodels .ArrayFields .filter (array__contained_by = [1 , 2 , 3 ])
98
+ self .assertEqual (found , [obj1 , obj2 , obj3 ])
99
+
100
+ found = await testmodels .ArrayFields .filter (array__contained_by = [1 , 2 ])
101
+ self .assertEqual (found , [obj1 , obj2 ])
102
+
103
+ found = await testmodels .ArrayFields .filter (array__contained_by = [1 ])
104
+ self .assertEqual (found , [obj1 ])
105
+
106
+ async def test_contained_by_strs (self ):
107
+ obj1 = await testmodels .ArrayFields .create (array_str = ["a" ], array = [])
108
+ obj2 = await testmodels .ArrayFields .create (array_str = ["a" , "b" ], array = [])
109
+ obj3 = await testmodels .ArrayFields .create (array_str = ["a" , "b" , "c" ], array = [])
110
+
111
+ found = await testmodels .ArrayFields .filter (array_str__contained_by = ["a" , "b" , "c" , "d" ])
112
+ self .assertEqual (found , [obj1 , obj2 , obj3 ])
113
+
114
+ found = await testmodels .ArrayFields .filter (array_str__contained_by = ["a" , "b" ])
115
+ self .assertEqual (found , [obj1 , obj2 ])
116
+
117
+ found = await testmodels .ArrayFields .filter (array_str__contained_by = ["x" , "y" , "z" ])
118
+ self .assertEqual (found , [])
119
+
120
+ async def test_overlap_ints (self ):
121
+ obj1 = await testmodels .ArrayFields .create (array = [1 , 2 , 3 ])
122
+ obj2 = await testmodels .ArrayFields .create (array = [2 , 3 , 4 ])
123
+ obj3 = await testmodels .ArrayFields .create (array = [3 , 4 , 5 ])
124
+
125
+ found = await testmodels .ArrayFields .filter (array__overlap = [1 , 2 ])
126
+ self .assertEqual (found , [obj1 , obj2 ])
127
+
128
+ found = await testmodels .ArrayFields .filter (array__overlap = [4 ])
129
+ self .assertEqual (found , [obj2 , obj3 ])
130
+
131
+ found = await testmodels .ArrayFields .filter (array__overlap = [1 , 2 , 3 , 4 , 5 ])
132
+ self .assertEqual (found , [obj1 , obj2 , obj3 ])
133
+
134
+ async def test_array_length (self ):
135
+ await testmodels .ArrayFields .create (array = [1 , 2 , 3 ])
136
+ await testmodels .ArrayFields .create (array = [1 ])
137
+ await testmodels .ArrayFields .create (array = [1 , 2 ])
138
+
139
+ found = await testmodels .ArrayFields .filter (array__len = 3 ).values_list ("array" , flat = True )
140
+ self .assertEqual (list (found ), [[1 , 2 , 3 ]])
141
+
142
+ found = await testmodels .ArrayFields .filter (array__len = 1 ).values_list ("array" , flat = True )
143
+ self .assertEqual (list (found ), [[1 ]])
144
+
145
+ found = await testmodels .ArrayFields .filter (array__len = 0 ).values_list ("array" , flat = True )
146
+ self .assertEqual (list (found ), [])
0 commit comments