@@ -95,9 +95,17 @@ void main() {
9595 group ('filtering operations' , () {
9696 setUp (() {
9797 db.from ('users' ).insert ([
98- {'id' : 1 , 'name' : 'John' , 'age' : 25 },
99- {'id' : 2 , 'name' : 'Jane' , 'age' : 30 },
100- {'id' : 3 , 'name' : 'Bob' , 'age' : 20 },
98+ {'id' : 1 , 'name' : 'John' , 'age' : 25 , 'status' : 'active' , 'score' : 100 },
99+ {'id' : 2 , 'name' : 'Jane' , 'age' : 30 , 'status' : 'active' , 'score' : 150 },
100+ {'id' : 3 , 'name' : 'Bob' , 'age' : 20 , 'status' : 'inactive' , 'score' : 80 },
101+ {'id' : 4 , 'name' : 'Alice' , 'age' : 25 , 'status' : 'active' , 'score' : 120 },
102+ {
103+ 'id' : 5 ,
104+ 'name' : 'Charlie' ,
105+ 'age' : 35 ,
106+ 'status' : 'inactive' ,
107+ 'score' : 90
108+ },
101109 ]);
102110 });
103111
@@ -109,14 +117,17 @@ void main() {
109117
110118 test ('neq filter' , () {
111119 final result = db.from ('users' ).neq ('name' , 'John' ).select ();
112- expect (result.length, 2 );
120+ expect (result.length, 4 );
113121 expect (result.every ((user) => user['name' ] != 'John' ), true );
114122 });
115123
116124 test ('gt filter' , () {
117125 final result = db.from ('users' ).gt ('age' , 25 ).select ();
118- expect (result.length, 1 );
119- expect (result.first['name' ], 'Jane' );
126+ expect (result.length, 2 );
127+ expect (
128+ result.map ((user) => user['name' ]).toList (),
129+ containsAll (['Jane' , 'Charlie' ]),
130+ );
120131 });
121132
122133 test ('lt filter' , () {
@@ -127,16 +138,93 @@ void main() {
127138
128139 test ('gte filter' , () {
129140 final result = db.from ('users' ).gte ('age' , 25 ).select ();
130- expect (result.length, 2 );
131- expect (result.map ((user) => user['name' ]).toList ()..sort (),
132- ['Jane' , 'John' ]);
141+ expect (result.length, 4 );
142+ expect (
143+ result.map ((user) => user['name' ]).toList (),
144+ containsAll (['Jane' , 'John' , 'Alice' , 'Charlie' ]),
145+ );
133146 });
134147
135148 test ('lte filter' , () {
136149 final result = db.from ('users' ).lte ('age' , 25 ).select ();
150+ expect (result.length, 3 );
151+ expect (
152+ result.map ((user) => user['name' ]).toList (),
153+ containsAll (['Bob' , 'John' , 'Alice' ]),
154+ );
155+ });
156+
157+ test ('multiple filters with eq and gt' , () {
158+ final result =
159+ db.from ('users' ).eq ('status' , 'active' ).gt ('score' , 100 ).select ();
160+
137161 expect (result.length, 2 );
138162 expect (
139- result.map ((user) => user['name' ]).toList ()..sort (), ['Bob' , 'John' ]);
163+ result.every (
164+ (user) => user['status' ] == 'active' && user['score' ] > 100 ),
165+ true );
166+ });
167+
168+ test ('multiple filters with eq and lte' , () {
169+ final result = db.from ('users' ).eq ('age' , 25 ).lte ('score' , 120 ).select ();
170+
171+ expect (result.length, 2 );
172+ expect (result.every ((user) => user['age' ] == 25 && user['score' ] <= 120 ),
173+ true );
174+ });
175+
176+ test ('multiple filters with neq and gte' , () {
177+ final result =
178+ db.from ('users' ).neq ('status' , 'active' ).gte ('age' , 20 ).select ();
179+
180+ expect (result.length, 2 );
181+ expect (
182+ result
183+ .every ((user) => user['status' ] != 'active' && user['age' ] >= 20 ),
184+ true );
185+ });
186+
187+ test ('chaining three filters' , () {
188+ final result = db
189+ .from ('users' )
190+ .eq ('status' , 'active' )
191+ .gte ('age' , 25 )
192+ .lt ('score' , 130 )
193+ .select ();
194+
195+ expect (result.length, 2 );
196+ expect (
197+ result.map ((user) => user['name' ]).toList (),
198+ containsAll (['John' , 'Alice' ]),
199+ );
200+ });
201+
202+ test ('multiple filters with update' , () {
203+ final result = db
204+ .from ('users' )
205+ .eq ('status' , 'active' )
206+ .gt ('score' , 100 )
207+ .update ({'status' : 'premium' });
208+
209+ expect (result.length, 2 );
210+ expect (
211+ result.every ((user) => user['status' ] == 'premium' ),
212+ isTrue,
213+ );
214+ });
215+
216+ test ('multiple filters with delete' , () {
217+ final deleted =
218+ db.from ('users' ).eq ('status' , 'inactive' ).lt ('score' , 100 ).delete ();
219+
220+ expect (deleted.length, 2 );
221+ expect (
222+ deleted.map ((user) => user['name' ]).toList (),
223+ containsAll (['Bob' , 'Charlie' ]),
224+ );
225+
226+ final remaining = db.from ('users' ).select ();
227+ expect (remaining.length, 3 );
140228 });
141229 });
142230
0 commit comments