Files
kami-parse-server/spec/ParseCloudCodePublisher.spec.js

70 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

const ParseCloudCodePublisher = require('../lib/LiveQuery/ParseCloudCodePublisher').ParseCloudCodePublisher;
const Parse = require('parse/node');
2016-03-10 14:27:00 -08:00
describe('ParseCloudCodePublisher', function() {
beforeEach(function(done) {
// Mock ParsePubSub
const mockParsePubSub = {
2016-03-10 14:27:00 -08:00
createPublisher: jasmine.createSpy('publish').and.returnValue({
publish: jasmine.createSpy('publish'),
on: jasmine.createSpy('on')
}),
createSubscriber: jasmine.createSpy('publish').and.returnValue({
subscribe: jasmine.createSpy('subscribe'),
on: jasmine.createSpy('on')
})
};
jasmine.mockLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub', mockParsePubSub);
2016-03-10 14:27:00 -08:00
done();
});
it('can initialize', function() {
const config = {}
new ParseCloudCodePublisher(config);
2016-03-10 14:27:00 -08:00
const ParsePubSub = require('../lib/LiveQuery/ParsePubSub').ParsePubSub;
2016-03-10 14:27:00 -08:00
expect(ParsePubSub.createPublisher).toHaveBeenCalledWith(config);
});
it('can handle cloud code afterSave request', function() {
const publisher = new ParseCloudCodePublisher({});
2016-03-10 14:27:00 -08:00
publisher._onCloudCodeMessage = jasmine.createSpy('onCloudCodeMessage');
const request = {};
2016-03-10 14:27:00 -08:00
publisher.onCloudCodeAfterSave(request);
2016-11-28 12:15:21 -02:00
expect(publisher._onCloudCodeMessage).toHaveBeenCalledWith(Parse.applicationId + 'afterSave', request);
2016-03-10 14:27:00 -08:00
});
it('can handle cloud code afterDelete request', function() {
const publisher = new ParseCloudCodePublisher({});
2016-03-10 14:27:00 -08:00
publisher._onCloudCodeMessage = jasmine.createSpy('onCloudCodeMessage');
const request = {};
2016-03-10 14:27:00 -08:00
publisher.onCloudCodeAfterDelete(request);
2016-11-28 12:15:21 -02:00
expect(publisher._onCloudCodeMessage).toHaveBeenCalledWith(Parse.applicationId + 'afterDelete', request);
2016-03-10 14:27:00 -08:00
});
it('can handle cloud code request', function() {
const publisher = new ParseCloudCodePublisher({});
const currentParseObject = new Parse.Object('Test');
2016-03-10 14:27:00 -08:00
currentParseObject.set('key', 'value');
const originalParseObject = new Parse.Object('Test');
2016-03-10 14:27:00 -08:00
originalParseObject.set('key', 'originalValue');
const request = {
2016-03-10 14:27:00 -08:00
object: currentParseObject,
original: originalParseObject
};
publisher._onCloudCodeMessage('afterSave', request);
const args = publisher.parsePublisher.publish.calls.mostRecent().args;
2016-03-10 14:27:00 -08:00
expect(args[0]).toBe('afterSave');
const message = JSON.parse(args[1]);
2016-03-10 14:27:00 -08:00
expect(message.currentParseObject).toEqual(request.object._toFullJSON());
expect(message.originalParseObject).toEqual(request.original._toFullJSON());
});
afterEach(function(){
jasmine.restoreLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub');
2016-03-10 14:27:00 -08:00
});
});