* reload the right data More passing postgres tests Handle schema updates, and $in for non array columns remove authdata from user and implement ensureUniqueness Make some tests work, detect existing classes Throw proper error for unique index violation fix findOneAndUpdate Support more types support more type Support boolean, fix _rperm/_wperm, add TODO Support string types and also simplify tests Move operator flattening into Parse Server and out of mongo adapters Move authdata transform for create into Parse Server Move authdata transforms completely in to Parse Server Fix test setup inline addSchema Inject default schema to response from DB adapter * Mark tests that don't work in Postgres * Exclude one more test * Exclude some more failing tests * Exclude more tests
290 lines
8.6 KiB
JavaScript
290 lines
8.6 KiB
JavaScript
var Client = require('../src/LiveQuery/Client').Client;
|
|
var ParseWebSocket = require('../src/LiveQuery/ParseWebSocketServer').ParseWebSocket;
|
|
|
|
describe('Client', function() {
|
|
it('can be initialized', function() {
|
|
var parseWebSocket = new ParseWebSocket({});
|
|
var client = new Client(1, parseWebSocket);
|
|
|
|
expect(client.id).toBe(1);
|
|
expect(client.parseWebSocket).toBe(parseWebSocket);
|
|
expect(client.subscriptionInfos.size).toBe(0);
|
|
});
|
|
|
|
it('can push response', function() {
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
Client.pushResponse(parseWebSocket, 'message');
|
|
|
|
expect(parseWebSocket.send).toHaveBeenCalledWith('message');
|
|
});
|
|
|
|
it('can push error', function() {
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
Client.pushError(parseWebSocket, 1, 'error', true);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('error');
|
|
expect(messageJSON.error).toBe('error');
|
|
expect(messageJSON.code).toBe(1);
|
|
expect(messageJSON.reconnect).toBe(true);
|
|
});
|
|
|
|
it('can add subscription information', function() {
|
|
var subscription = {};
|
|
var fields = ['test'];
|
|
var subscriptionInfo = {
|
|
subscription: subscription,
|
|
fields: fields
|
|
}
|
|
var client = new Client(1, {});
|
|
client.addSubscriptionInfo(1, subscriptionInfo);
|
|
|
|
expect(client.subscriptionInfos.size).toBe(1);
|
|
expect(client.subscriptionInfos.get(1)).toBe(subscriptionInfo);
|
|
});
|
|
|
|
it('can get subscription information', function() {
|
|
var subscription = {};
|
|
var fields = ['test'];
|
|
var subscriptionInfo = {
|
|
subscription: subscription,
|
|
fields: fields
|
|
}
|
|
var client = new Client(1, {});
|
|
client.addSubscriptionInfo(1, subscriptionInfo);
|
|
var subscriptionInfoAgain = client.getSubscriptionInfo(1);
|
|
|
|
expect(subscriptionInfoAgain).toBe(subscriptionInfo);
|
|
});
|
|
|
|
it('can delete subscription information', function() {
|
|
var subscription = {};
|
|
var fields = ['test'];
|
|
var subscriptionInfo = {
|
|
subscription: subscription,
|
|
fields: fields
|
|
}
|
|
var client = new Client(1, {});
|
|
client.addSubscriptionInfo(1, subscriptionInfo);
|
|
client.deleteSubscriptionInfo(1);
|
|
|
|
expect(client.subscriptionInfos.size).toBe(0);
|
|
});
|
|
|
|
|
|
it('can generate ParseObject JSON with null selected field', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
};
|
|
var client = new Client(1, {});
|
|
|
|
expect(client._toJSONWithFields(parseObjectJSON, null)).toBe(parseObjectJSON);
|
|
});
|
|
|
|
it('can generate ParseObject JSON with undefined selected field', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
};
|
|
var client = new Client(1, {});
|
|
|
|
expect(client._toJSONWithFields(parseObjectJSON, undefined)).toBe(parseObjectJSON);
|
|
});
|
|
|
|
it('can generate ParseObject JSON with selected fields', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
};
|
|
var client = new Client(1, {});
|
|
|
|
expect(client._toJSONWithFields(parseObjectJSON, ['test'])).toEqual({
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
});
|
|
});
|
|
|
|
it('can generate ParseObject JSON with nonexistent selected fields', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
};
|
|
var client = new Client(1, {});
|
|
var limitedParseObject = client._toJSONWithFields(parseObjectJSON, ['name']);
|
|
|
|
expect(limitedParseObject).toEqual({
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
});
|
|
expect('name' in limitedParseObject).toBe(false);
|
|
});
|
|
|
|
it('can push connect response', function() {
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushConnect();
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('connected');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
});
|
|
|
|
it('can push subscribe response', function() {
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushSubscribe(2);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('subscribed');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
expect(messageJSON.requestId).toBe(2);
|
|
});
|
|
|
|
it('can push unsubscribe response', function() {
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushUnsubscribe(2);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('unsubscribed');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
expect(messageJSON.requestId).toBe(2);
|
|
});
|
|
|
|
it('can push create response', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
};
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushCreate(2, parseObjectJSON);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('create');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
expect(messageJSON.requestId).toBe(2);
|
|
expect(messageJSON.object).toEqual(parseObjectJSON);
|
|
});
|
|
|
|
it('can push enter response', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
};
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushEnter(2, parseObjectJSON);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('enter');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
expect(messageJSON.requestId).toBe(2);
|
|
expect(messageJSON.object).toEqual(parseObjectJSON);
|
|
});
|
|
|
|
it('can push update response', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
};
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushUpdate(2, parseObjectJSON);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('update');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
expect(messageJSON.requestId).toBe(2);
|
|
expect(messageJSON.object).toEqual(parseObjectJSON);
|
|
});
|
|
|
|
it('can push leave response', function() {
|
|
var parseObjectJSON = {
|
|
key : 'value',
|
|
className: 'test',
|
|
objectId: 'test',
|
|
updatedAt: '2015-12-07T21:27:13.746Z',
|
|
createdAt: '2015-12-07T21:27:13.746Z',
|
|
ACL: 'test',
|
|
test: 'test'
|
|
};
|
|
var parseWebSocket = {
|
|
send: jasmine.createSpy('send')
|
|
};
|
|
var client = new Client(1, parseWebSocket);
|
|
client.pushLeave(2, parseObjectJSON);
|
|
|
|
var lastCall = parseWebSocket.send.calls.first();
|
|
var messageJSON = JSON.parse(lastCall.args[0]);
|
|
expect(messageJSON.op).toBe('leave');
|
|
expect(messageJSON.clientId).toBe(1);
|
|
expect(messageJSON.requestId).toBe(2);
|
|
expect(messageJSON.object).toEqual(parseObjectJSON);
|
|
});
|
|
});
|