* GraphQL Object constraints
Implements the GraphQL Object constraints, which allows us to filter queries results using the `$eq`, `$lt`, `$gt`, `$in`, and other Parse supported constraints.
Example:
```
query objects {
findMyClass(where: {
objField: {
_eq: {
key: 'foo.bar',
value: 'hello'
},
_gt: {
key: 'foo.number',
value: 10
},
_lt: {
key: 'anotherNumber',
value: 5
}
}
}) {
results {
objectId
}
}
}
```
In the example above, we have the `findMyClass` query (automatically generated for the `MyClass` class), and a field named `objField` whose type is Object. The object below represents a valid `objField` value and would satisfy all constraints:
```
{
"foo": {
"bar": "hello",
"number": 11
},
"anotherNumber": 4
}
```
The Object constraint is applied only when using Parse class object type queries. When using "generic" queries such as `get` and `find`, this type of constraint is not available.
* Objects constraints not working on Postgres
Fixes the $eq, $ne, $gt, and $lt constraints when applied on an Object type field.
* Fix object constraint field name
* Fix Postgres constraints indexes
* fix: Object type composed constraints not working
* fix: Rename key and value fields
* refactor: Object constraints for generic queries
* fix: Object constraints not working on Postgres
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
const {
|
|
ParseWebSocketServer,
|
|
} = require('../lib/LiveQuery/ParseWebSocketServer');
|
|
|
|
describe('ParseWebSocketServer', function() {
|
|
beforeEach(function(done) {
|
|
// Mock ws server
|
|
const EventEmitter = require('events');
|
|
const mockServer = function() {
|
|
return new EventEmitter();
|
|
};
|
|
jasmine.mockLibrary('ws', 'Server', mockServer);
|
|
done();
|
|
});
|
|
|
|
it('can handle connect event when ws is open', function(done) {
|
|
const onConnectCallback = jasmine.createSpy('onConnectCallback');
|
|
const http = require('http');
|
|
const server = http.createServer();
|
|
const parseWebSocketServer = new ParseWebSocketServer(
|
|
server,
|
|
onConnectCallback,
|
|
{ websocketTimeout: 5 }
|
|
).server;
|
|
const ws = {
|
|
readyState: 0,
|
|
OPEN: 0,
|
|
ping: jasmine.createSpy('ping'),
|
|
};
|
|
parseWebSocketServer.onConnection(ws);
|
|
|
|
// Make sure callback is called
|
|
expect(onConnectCallback).toHaveBeenCalled();
|
|
// Make sure we ping to the client
|
|
setTimeout(function() {
|
|
expect(ws.ping).toHaveBeenCalled();
|
|
server.close();
|
|
done();
|
|
}, 10);
|
|
});
|
|
|
|
afterEach(function() {
|
|
jasmine.restoreLibrary('ws', 'Server');
|
|
});
|
|
});
|