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

146 lines
5.0 KiB
JavaScript
Raw Normal View History

const ParsePubSub = require('../lib/LiveQuery/ParsePubSub').ParsePubSub;
2016-03-10 14:27:00 -08:00
describe('ParsePubSub', function() {
beforeEach(function(done) {
// Mock RedisPubSub
const mockRedisPubSub = {
2016-03-10 14:27:00 -08:00
createPublisher: jasmine.createSpy('createPublisherRedis'),
createSubscriber: jasmine.createSpy('createSubscriberRedis'),
2016-03-10 14:27:00 -08:00
};
jasmine.mockLibrary(
'../lib/Adapters/PubSub/RedisPubSub',
'RedisPubSub',
mockRedisPubSub
);
2016-03-10 14:27:00 -08:00
// Mock EventEmitterPubSub
const mockEventEmitterPubSub = {
2016-03-10 14:27:00 -08:00
createPublisher: jasmine.createSpy('createPublisherEventEmitter'),
createSubscriber: jasmine.createSpy('createSubscriberEventEmitter'),
2016-03-10 14:27:00 -08:00
};
jasmine.mockLibrary(
'../lib/Adapters/PubSub/EventEmitterPubSub',
'EventEmitterPubSub',
mockEventEmitterPubSub
);
2016-03-10 14:27:00 -08:00
done();
});
it('can create redis publisher', function() {
ParsePubSub.createPublisher({
redisURL: 'redisURL',
redisOptions: { socket_keepalive: true },
2016-03-10 14:27:00 -08:00
});
const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub')
.RedisPubSub;
const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub')
.EventEmitterPubSub;
expect(RedisPubSub.createPublisher).toHaveBeenCalledWith({
redisURL: 'redisURL',
redisOptions: { socket_keepalive: true },
});
2016-03-10 14:27:00 -08:00
expect(EventEmitterPubSub.createPublisher).not.toHaveBeenCalled();
});
it('can create event emitter publisher', function() {
ParsePubSub.createPublisher({});
2016-03-10 14:27:00 -08:00
const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub')
.RedisPubSub;
const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub')
.EventEmitterPubSub;
2016-03-10 14:27:00 -08:00
expect(RedisPubSub.createPublisher).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createPublisher).toHaveBeenCalled();
});
it('can create redis subscriber', function() {
ParsePubSub.createSubscriber({
redisURL: 'redisURL',
redisOptions: { socket_keepalive: true },
2016-03-10 14:27:00 -08:00
});
const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub')
.RedisPubSub;
const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub')
.EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).toHaveBeenCalledWith({
redisURL: 'redisURL',
redisOptions: { socket_keepalive: true },
});
2016-03-10 14:27:00 -08:00
expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled();
});
it('can create event emitter subscriber', function() {
ParsePubSub.createSubscriber({});
2016-03-10 14:27:00 -08:00
const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub')
.RedisPubSub;
const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub')
.EventEmitterPubSub;
2016-03-10 14:27:00 -08:00
expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createSubscriber).toHaveBeenCalled();
});
it('can create publisher/sub with custom adapter', function() {
const adapter = {
createPublisher: jasmine.createSpy('createPublisher'),
createSubscriber: jasmine.createSpy('createSubscriber'),
};
ParsePubSub.createPublisher({
pubSubAdapter: adapter,
});
expect(adapter.createPublisher).toHaveBeenCalled();
ParsePubSub.createSubscriber({
pubSubAdapter: adapter,
});
expect(adapter.createSubscriber).toHaveBeenCalled();
const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub')
.RedisPubSub;
const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub')
.EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled();
expect(RedisPubSub.createPublisher).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createPublisher).not.toHaveBeenCalled();
});
it('can create publisher/sub with custom function adapter', function() {
const adapter = {
createPublisher: jasmine.createSpy('createPublisher'),
createSubscriber: jasmine.createSpy('createSubscriber'),
};
ParsePubSub.createPublisher({
pubSubAdapter: function() {
return adapter;
},
});
expect(adapter.createPublisher).toHaveBeenCalled();
ParsePubSub.createSubscriber({
pubSubAdapter: function() {
return adapter;
},
});
expect(adapter.createSubscriber).toHaveBeenCalled();
const RedisPubSub = require('../lib/Adapters/PubSub/RedisPubSub')
.RedisPubSub;
const EventEmitterPubSub = require('../lib/Adapters/PubSub/EventEmitterPubSub')
.EventEmitterPubSub;
expect(RedisPubSub.createSubscriber).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createSubscriber).not.toHaveBeenCalled();
expect(RedisPubSub.createPublisher).not.toHaveBeenCalled();
expect(EventEmitterPubSub.createPublisher).not.toHaveBeenCalled();
});
afterEach(function() {
jasmine.restoreLibrary('../lib/Adapters/PubSub/RedisPubSub', 'RedisPubSub');
jasmine.restoreLibrary(
'../lib/Adapters/PubSub/EventEmitterPubSub',
'EventEmitterPubSub'
);
2016-03-10 14:27:00 -08:00
});
});