* Adding elemMatch and nor * lint * adding test * adding edge test * postgres support * clean up * empty test
This commit is contained in:
committed by
Diamond Lewis
parent
ad244d6654
commit
c0f86ae1d1
@@ -754,6 +754,109 @@ describe('Parse.Query testing', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('containedBy pointer array', (done) => {
|
||||
const objects = Array.from(Array(10).keys()).map((idx) => {
|
||||
const obj = new Parse.Object('Object');
|
||||
obj.set('key', idx);
|
||||
return obj;
|
||||
});
|
||||
|
||||
const parent = new Parse.Object('Parent');
|
||||
const parent2 = new Parse.Object('Parent');
|
||||
const parent3 = new Parse.Object('Parent');
|
||||
|
||||
Parse.Object.saveAll(objects).then(() => {
|
||||
// [0, 1, 2]
|
||||
parent.set('objects', objects.slice(0, 3));
|
||||
|
||||
const shift = objects.shift();
|
||||
// [2, 0]
|
||||
parent2.set('objects', [objects[1], shift]);
|
||||
|
||||
// [1, 2, 3, 4]
|
||||
parent3.set('objects', objects.slice(1, 4));
|
||||
|
||||
return Parse.Object.saveAll([parent, parent2, parent3]);
|
||||
}).then(() => {
|
||||
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
const pointers = objects.map(object => object.toPointer());
|
||||
|
||||
// Return all Parent where all parent.objects are contained in objects
|
||||
return rp.get({
|
||||
url: Parse.serverURL + "/classes/Parent",
|
||||
json: {
|
||||
where: {
|
||||
objects: {
|
||||
$containedBy: pointers
|
||||
}
|
||||
}
|
||||
},
|
||||
headers: {
|
||||
'X-Parse-Application-Id': Parse.applicationId,
|
||||
'X-Parse-Javascript-Key': Parse.javaScriptKey
|
||||
}
|
||||
});
|
||||
}).then((results) => {
|
||||
expect(results.results[0].objectId).not.toBeUndefined();
|
||||
expect(results.results[0].objectId).toBe(parent3.id);
|
||||
expect(results.results.length).toBe(1);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('containedBy number array', (done) => {
|
||||
const options = Object.assign({}, masterKeyOptions, {
|
||||
body: {
|
||||
where: { numbers: { $containedBy: [1, 2, 3, 4, 5, 6, 7, 8, 9] } },
|
||||
}
|
||||
});
|
||||
const obj1 = new TestObject({ numbers: [0, 1, 2] });
|
||||
const obj2 = new TestObject({ numbers: [2, 0] });
|
||||
const obj3 = new TestObject({ numbers: [1, 2, 3, 4] });
|
||||
Parse.Object.saveAll([obj1, obj2, obj3]).then(() => {
|
||||
return rp.get(Parse.serverURL + "/classes/TestObject", options);
|
||||
}).then((results) => {
|
||||
expect(results.results[0].objectId).not.toBeUndefined();
|
||||
expect(results.results[0].objectId).toBe(obj3.id);
|
||||
expect(results.results.length).toBe(1);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('containedBy empty array', (done) => {
|
||||
const options = Object.assign({}, masterKeyOptions, {
|
||||
body: {
|
||||
where: { numbers: { $containedBy: [] } },
|
||||
}
|
||||
});
|
||||
const obj1 = new TestObject({ numbers: [0, 1, 2] });
|
||||
const obj2 = new TestObject({ numbers: [2, 0] });
|
||||
const obj3 = new TestObject({ numbers: [1, 2, 3, 4] });
|
||||
Parse.Object.saveAll([obj1, obj2, obj3]).then(() => {
|
||||
return rp.get(Parse.serverURL + "/classes/TestObject", options);
|
||||
}).then((results) => {
|
||||
expect(results.results.length).toBe(0);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('containedBy invalid query', (done) => {
|
||||
const options = Object.assign({}, masterKeyOptions, {
|
||||
body: {
|
||||
where: { objects: { $containedBy: 1234 } },
|
||||
}
|
||||
});
|
||||
const obj = new TestObject();
|
||||
obj.save().then(() => {
|
||||
return rp.get(Parse.serverURL + "/classes/TestObject", options);
|
||||
}).then(done.fail).catch((error) => {
|
||||
equal(error.error.code, Parse.Error.INVALID_JSON);
|
||||
equal(error.error.error, 'bad $containedBy: should be an array');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
const BoxedNumber = Parse.Object.extend({
|
||||
className: "BoxedNumber"
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user