You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: test/filter.js
+4-4
Original file line number
Diff line number
Diff line change
@@ -176,17 +176,17 @@ describe('$mod', function () {
176
176
177
177
describe('Match a Field Without Specifying Array Index',function(){
178
178
it('basic case',function(){
179
-
assert.equal("EXISTS (SELECT * FROM jsonb_array_elements(data->'courses') WHERE value->>'distance'='5K')",convert('data',{'courses.distance': '5K'},['courses']))
179
+
assert.equal("(data->'courses'->>'distance'='5K' OR EXISTS (SELECT * FROM jsonb_array_elements(data->'courses') WHERE jsonb_typeof(data->'courses')='array' AND value->>'distance'='5K'))",convert('data',{'courses.distance': '5K'},['courses']))
180
180
})
181
181
it('direct match',function(){
182
-
assert.equal('EXISTS (SELECT * FROM jsonb_array_elements(data->\'roles\') WHERE value #>>\'{}\'=\'Admin\')',convert('data',{'roles': 'Admin'},['roles']))
182
+
assert.equal('(data->>\'roles\'=\'Admin\' OR EXISTS (SELECT * FROM jsonb_array_elements(data->\'roles\') WHERE jsonb_typeof(data->\'roles\')=\'array\' AND value #>>\'{}\'=\'Admin\'))',convert('data',{'roles': 'Admin'},['roles']))
183
183
})
184
184
it('$in',function(){
185
-
assert.equal("EXISTS (SELECT * FROM jsonb_array_elements(data->'roles') WHERE value #>>'{}' IN ('Test', 'Admin'))",convert('data',{'roles': {$in: ["Test","Admin"]}},['roles']))
185
+
assert.equal("(data->>'roles' IN ('Test', 'Admin') OR EXISTS (SELECT * FROM jsonb_array_elements(data->'roles') WHERE jsonb_typeof(data->'roles')='array' AND value #>>'{}' IN ('Test', 'Admin')))",convert('data',{'roles': {$in: ["Test","Admin"]}},['roles']))
186
186
})
187
187
})
188
188
describe('special cases',function(){
189
189
it('should return true when passed no parameters',function(){
assert.equal(convertUpdate('data',{$pull: {cities: 'LA'}}),'array_remove(ARRAY(SELECT value FROM jsonb_array_elements(data->\'cities\')),\'"LA"\')')
56
+
assert.equal(convertUpdate('data',{$pull: {cities: 'LA'}}),'jsonb_set(data,\'{cities}\',to_jsonb(ARRAY(SELECT value FROM jsonb_array_elements(data->\'cities\') WHERE NOT value #>>\'{}\'=\'LA\')))')
57
57
})
58
58
it('$push',function(){
59
59
assert.equal(convertUpdate('data',{$push: {cities: 'LA'}}),'jsonb_set(data,\'{cities}\',to_jsonb(array_append(ARRAY(SELECT value FROM jsonb_array_elements(data->\'cities\')),\'"LA"\')))')
0 commit comments