@@ -201,7 +201,27 @@ describe('findMany with filters', () => {
201201 expect ( result . entities . map ( ( e ) => e . name ) . sort ( ) ) . toEqual ( [ 'Bob' , 'Jane' ] ) ;
202202 } ) ;
203203
204- it ( 'should filter entities using NOT operator with number fields' , ( ) => {
204+ it ( 'should throw an error if NOT operator is used at the field level' , ( ) => {
205+ // Create test entities
206+ Entity . create ( handle , Person ) ( { name : 'John' , age : 30 , isActive : true } ) ;
207+ Entity . create ( handle , Person ) ( { name : 'Jane' , age : 25 , isActive : true } ) ;
208+ Entity . create ( handle , Person ) ( { name : 'Bob' , age : 40 , isActive : false } ) ;
209+
210+ expect ( ( ) => {
211+ // Filter by name NOT equal to 'John'
212+ Entity . findMany (
213+ handle ,
214+ Person ,
215+ {
216+ // @ts -expect-error
217+ name : { not : { is : 'John' } } ,
218+ } ,
219+ undefined ,
220+ ) ;
221+ } ) . toThrowError ( "Logical operators 'not', 'or' are only allowed at the root (cross-field) level." ) ;
222+ } ) ;
223+
224+ it . skip ( 'should filter entities using NOT operator with number fields' , ( ) => {
205225 // Create test entities
206226 Entity . create ( handle , Person ) ( { name : 'John' , age : 30 , isActive : true } ) ;
207227 Entity . create ( handle , Person ) ( { name : 'Jane' , age : 25 , isActive : true } ) ;
@@ -241,6 +261,26 @@ describe('findMany with filters', () => {
241261 expect ( result . entities . map ( ( e ) => e . name ) . sort ( ) ) . toEqual ( [ 'Jane' , 'John' ] ) ;
242262 } ) ;
243263
264+ it ( 'should throw an error if OR operator is used at the field level' , ( ) => {
265+ // Create test entities
266+ Entity . create ( handle , Person ) ( { name : 'John' , age : 30 , isActive : true } ) ;
267+ Entity . create ( handle , Person ) ( { name : 'Jane' , age : 25 , isActive : true } ) ;
268+ Entity . create ( handle , Person ) ( { name : 'Bob' , age : 40 , isActive : false } ) ;
269+
270+ expect ( ( ) => {
271+ // Attempt to use OR operator at the field level (should throw)
272+ Entity . findMany (
273+ handle ,
274+ Person ,
275+ {
276+ // @ts -expect-error
277+ name : { or : [ { is : 'John' } , { is : 'Jane' } ] } ,
278+ } ,
279+ undefined ,
280+ ) ;
281+ } ) . toThrowError ( "Logical operators 'not', 'or' are only allowed at the root (cross-field) level." ) ;
282+ } ) ;
283+
244284 it ( 'should filter entities using OR operator with number fields' , ( ) => {
245285 // Create test entities
246286 Entity . create ( handle , Person ) ( { name : 'John' , age : 30 , isActive : true } ) ;
@@ -281,23 +321,24 @@ describe('findMany with filters', () => {
281321 expect ( result . entities [ 0 ] . name ) . toBe ( 'Bob' ) ;
282322 } ) ;
283323
284- it ( 'should filter entities using NOT with OR operator ' , ( ) => {
324+ it ( 'should throw an error if NOT operator is used at the field level ' , ( ) => {
285325 // Create test entities
286326 Entity . create ( handle , Person ) ( { name : 'John' , age : 30 , isActive : true } ) ;
287327 Entity . create ( handle , Person ) ( { name : 'Jane' , age : 25 , isActive : true } ) ;
288328 Entity . create ( handle , Person ) ( { name : 'Bob' , age : 40 , isActive : false } ) ;
289329
290- // Filter by NOT (name equal to 'John' OR 'Jane')
291- const result = Entity . findMany (
292- handle ,
293- Person ,
294- {
295- not : { or : [ { name : { is : 'John' } } , { name : { is : 'Jane' } } ] } ,
296- } ,
297- undefined ,
298- ) ;
299- expect ( result . entities ) . toHaveLength ( 1 ) ;
300- expect ( result . entities [ 0 ] . name ) . toBe ( 'Bob' ) ;
330+ expect ( ( ) => {
331+ // Filter by name NOT (name is 'John' OR name is 'Jane')
332+ Entity . findMany (
333+ handle ,
334+ Person ,
335+ {
336+ // @ts -expect-error
337+ name : { not : { or : [ { is : 'John' } , { is : 'Jane' } ] } } ,
338+ } ,
339+ undefined ,
340+ ) ;
341+ } ) . toThrowError ( "Logical operators 'not', 'or' are only allowed at the root (cross-field) level." ) ;
301342 } ) ;
302343 } ) ;
303344
0 commit comments