@@ -42,3 +42,105 @@ async def test_values_list(self):
4242 obj0 = await testmodels .ArrayFields .create (array = [0 ])
4343 values = await testmodels .ArrayFields .get (id = obj0 .id ).values_list ("array" , flat = True )
4444 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