const ParseCloudCodePublisher = require('../lib/LiveQuery/ParseCloudCodePublisher') .ParseCloudCodePublisher; const Parse = require('parse/node'); describe('ParseCloudCodePublisher', function () { beforeEach(function (done) { // Mock ParsePubSub const mockParsePubSub = { 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); done(); }); it('can initialize', function () { const config = {}; new ParseCloudCodePublisher(config); const ParsePubSub = require('../lib/LiveQuery/ParsePubSub').ParsePubSub; expect(ParsePubSub.createPublisher).toHaveBeenCalledWith(config); }); it('can handle cloud code afterSave request', function () { const publisher = new ParseCloudCodePublisher({}); publisher._onCloudCodeMessage = jasmine.createSpy('onCloudCodeMessage'); const request = {}; publisher.onCloudCodeAfterSave(request); expect(publisher._onCloudCodeMessage).toHaveBeenCalledWith( Parse.applicationId + 'afterSave', request ); }); it('can handle cloud code afterDelete request', function () { const publisher = new ParseCloudCodePublisher({}); publisher._onCloudCodeMessage = jasmine.createSpy('onCloudCodeMessage'); const request = {}; publisher.onCloudCodeAfterDelete(request); expect(publisher._onCloudCodeMessage).toHaveBeenCalledWith( Parse.applicationId + 'afterDelete', request ); }); it('can handle cloud code request', function () { const publisher = new ParseCloudCodePublisher({}); const currentParseObject = new Parse.Object('Test'); currentParseObject.set('key', 'value'); const originalParseObject = new Parse.Object('Test'); originalParseObject.set('key', 'originalValue'); const request = { object: currentParseObject, original: originalParseObject, }; publisher._onCloudCodeMessage('afterSave', request); const args = publisher.parsePublisher.publish.calls.mostRecent().args; expect(args[0]).toBe('afterSave'); const message = JSON.parse(args[1]); expect(message.currentParseObject).toEqual(request.object._toFullJSON()); expect(message.originalParseObject).toEqual(request.original._toFullJSON()); }); afterEach(function () { jasmine.restoreLibrary('../lib/LiveQuery/ParsePubSub', 'ParsePubSub'); }); });