2018-07-02 23:30:14 -04:00
|
|
|
const DatabaseController = require('../lib/Controllers/DatabaseController.js');
|
2018-02-17 09:55:30 -05:00
|
|
|
const validateQuery = DatabaseController._validateQuery;
|
2017-02-26 10:37:33 -08:00
|
|
|
|
|
|
|
|
describe('DatabaseController', function() {
|
|
|
|
|
describe('validateQuery', function() {
|
2020-02-27 10:56:14 -08:00
|
|
|
it('should not restructure simple cases of SERVER-13732', done => {
|
|
|
|
|
const query = {
|
|
|
|
|
$or: [{ a: 1 }, { a: 2 }],
|
|
|
|
|
_rperm: { $in: ['a', 'b'] },
|
|
|
|
|
foo: 3,
|
|
|
|
|
};
|
|
|
|
|
validateQuery(query);
|
|
|
|
|
expect(query).toEqual({
|
|
|
|
|
$or: [{ a: 1 }, { a: 2 }],
|
|
|
|
|
_rperm: { $in: ['a', 'b'] },
|
|
|
|
|
foo: 3,
|
|
|
|
|
});
|
|
|
|
|
done();
|
2017-05-10 05:32:08 -07:00
|
|
|
});
|
|
|
|
|
|
2020-02-27 10:56:14 -08:00
|
|
|
it('should not restructure SERVER-13732 queries with $nears', done => {
|
|
|
|
|
let query = { $or: [{ a: 1 }, { b: 1 }], c: { $nearSphere: {} } };
|
|
|
|
|
validateQuery(query);
|
|
|
|
|
expect(query).toEqual({
|
|
|
|
|
$or: [{ a: 1 }, { b: 1 }],
|
|
|
|
|
c: { $nearSphere: {} },
|
|
|
|
|
});
|
|
|
|
|
query = { $or: [{ a: 1 }, { b: 1 }], c: { $near: {} } };
|
|
|
|
|
validateQuery(query);
|
|
|
|
|
expect(query).toEqual({ $or: [{ a: 1 }, { b: 1 }], c: { $near: {} } });
|
|
|
|
|
done();
|
|
|
|
|
});
|
2017-05-10 05:32:08 -07:00
|
|
|
|
2020-02-27 10:56:14 -08:00
|
|
|
it('should not push refactored keys down a tree for SERVER-13732', done => {
|
|
|
|
|
const query = {
|
|
|
|
|
a: 1,
|
|
|
|
|
$or: [{ $or: [{ b: 1 }, { b: 2 }] }, { $or: [{ c: 1 }, { c: 2 }] }],
|
|
|
|
|
};
|
|
|
|
|
validateQuery(query);
|
|
|
|
|
expect(query).toEqual({
|
|
|
|
|
a: 1,
|
|
|
|
|
$or: [{ $or: [{ b: 1 }, { b: 2 }] }, { $or: [{ c: 1 }, { c: 2 }] }],
|
2019-06-19 23:30:08 +01:00
|
|
|
});
|
2017-05-10 05:32:08 -07:00
|
|
|
|
2020-02-27 10:56:14 -08:00
|
|
|
done();
|
|
|
|
|
});
|
2017-02-26 10:37:33 -08:00
|
|
|
|
2020-02-27 10:56:14 -08:00
|
|
|
it('should reject invalid queries', done => {
|
|
|
|
|
expect(() => validateQuery({ $or: { a: 1 } })).toThrow();
|
|
|
|
|
done();
|
|
|
|
|
});
|
2019-06-19 23:30:08 +01:00
|
|
|
|
2020-02-27 10:56:14 -08:00
|
|
|
it('should accept valid queries', done => {
|
|
|
|
|
expect(() => validateQuery({ $or: [{ a: 1 }, { b: 2 }] })).not.toThrow();
|
|
|
|
|
done();
|
2017-02-26 10:37:33 -08:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|