-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
Copy pathParseCloudCodePublisher.spec.js
76 lines (66 loc) · 2.63 KB
/
ParseCloudCodePublisher.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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');
});
});