@@ -17,8 +17,14 @@ describe('string equality', function () {
17
17
} )
18
18
19
19
describe ( 'array equality' , function ( ) {
20
+ it ( 'array match' , function ( ) {
21
+ assert . equal ( 'data @> \'{ "roles": ["Admin"] }\'' , convert ( 'data' , { 'roles' : [ 'Admin' ] } ) )
22
+ } )
23
+ it ( 'array match' , function ( ) {
24
+ assert . equal ( 'data @> \'{ "roles": ["Admin","2"] }\'' , convert ( 'data' , { 'roles' : [ 'Admin' , '2' ] } ) )
25
+ } )
20
26
it ( 'should use =' , function ( ) {
21
- assert . equal ( 'data @> \'{ "roles": Admin }\'' , convert ( 'data' , { 'roles' : [ 'Admin' ] } ) )
27
+ assert . equal ( 'data @> \'{ "roles": " Admin" }\'' , convert ( 'data' , { 'roles' : 'Admin' } ) )
22
28
} )
23
29
it ( 'should matching numeric indexes' , function ( ) {
24
30
assert . equal ( 'data->\'roles\'->>0=\'Admin\'' , convert ( 'data' , { 'roles.0' : 'Admin' } ) )
@@ -215,6 +221,17 @@ describe('Match a Field Without Specifying Array Index', function () {
215
221
'data->\'roles\') WHERE jsonb_typeof(data->\'roles\')=\'array\' AND value #>>\'{}\' IN (\'Test\', \'Admin\')))' ,
216
222
convert ( 'data' , { 'roles' : { $in : [ 'Test' , 'Admin' ] } } , [ 'roles' ] ) )
217
223
} )
224
+ it ( '$all' , function ( ) {
225
+ assert . equal ( '(data @> \'{ "roles": { "$all": ["Test","Admin"] } }\' OR (EXISTS (SELECT * ' +
226
+ 'FROM jsonb_array_elements(data->\'roles\') WHERE jsonb_typeof(data->\'roles\')=\'array\' ' +
227
+ 'AND value @> \'"Test"\') AND EXISTS (SELECT * FROM jsonb_array_elements(data->\'roles\') ' +
228
+ 'WHERE jsonb_typeof(data->\'roles\')=\'array\' AND value @> \'"Admin"\')))' ,
229
+ convert ( 'data' , { 'roles' : { $all : [ 'Test' , 'Admin' ] } } , [ 'roles' ] ) )
230
+ } )
231
+ it ( 'with another array' , function ( ) {
232
+ assert . equal ( '(data @> \'{ "roles": ["Test","Admin"] }\' OR EXISTS (SELECT * FROM jsonb_array_elements(data->\'roles\') WHERE jsonb_typeof(data->\'roles\')=\'array\' AND value @> \'["Test","Admin"]\'::jsonb))' ,
233
+ convert ( 'data' , { 'roles' : [ 'Test' , 'Admin' ] } , [ 'roles' ] ) )
234
+ } )
218
235
} )
219
236
describe ( 'special cases' , function ( ) {
220
237
it ( 'should return true when passed no parameters' , function ( ) {
0 commit comments