Skip to content
71 changes: 71 additions & 0 deletions spec/MongoStorageAdapter.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,77 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
await expectAsync(adapter.getClass('UnknownClass')).toBeRejectedWith(undefined);
});


/**
* If we use equalTo to comparse the nested pointer it works
* But it does not work with contained in or matchesQuery
*/
it('Parse query works with nested objects if equal to is used', async () => {
const child = new Parse.Object('Child')
child.set('key','value')
await child.save();

const parent = new Parse.Object('Parent');
parent.set('some' ,{
nested : {
key : {
child
}
}
})
await parent.save();

const query1 = await new Parse.Query('Parent')
.equalTo('some.nested.key.child', child)
.find();

expect(query1.length).toEqual(1);
})

it('Parse query works when containedIn is used', async () => {
const child = new Parse.Object('Child')
child.set('key','value')
await child.save();

const parent = new Parse.Object('Parent');
parent.set('some' ,{
nested : {
key : {
child
}
}
})
await parent.save();

const query1 = await new Parse.Query('Parent')
.containedIn('some.nested.key.child', [child])
.find();

expect(query1.length).toEqual(1);
})

it('Parse query works when matchesQuery is used which in turn uses contained in', async () => {
const child = new Parse.Object('Child')
child.set('key','value')
await child.save();

const parent = new Parse.Object('Parent');
parent.set('some' ,{
nested : {
key : {
child
}
}
})
await parent.save();

const query1 = await new Parse.Query('Parent')
.matchesQuery('some.nested.key.child', new Parse.Query('Child').equalTo('key','value'))
.find();

expect(query1.length).toEqual(1);
})

it_only_mongodb_version('<5.1 || >=6')('should use index for caseInsensitive query', async () => {
const user = new Parse.User();
user.set('username', 'Bugs');
Expand Down
Loading