Files
kami-parse-server/spec/Subscription.spec.js
Florent Vilmart a5a172918e Refactor logging to provide common logger from LoggerAdapter (#2478)
* Refactor logging to provide common logger from LoggerAdapter

Move logger logic de WinstonLoggerAdapter

Further improvements in configuration

Use logger instead of getLogger

- Removes PLog module

Reverts name changes

nits

* Adds additional logging levels as requirements

* Adds tests for logging configuration

* removes flaky test

* investigate...

* further investigation

* Adds silent option to disable console output

* Restores logs with VERBOSE in tests

* Expose controller instead of adapter, reduces method requirements for adapter

* Shuffles initializations around

* Fix doc

* Load cloudCode last to make sure the logger is available

* Adds test to make sure we can load an adapter from npm module

* extract defaults

* Adds defaultMongoURI to defaults

* fix defaults values

* Proper error for PG failures

* Disable flaky test
2016-08-12 10:25:24 -07:00

115 lines
4.4 KiB
JavaScript

var Subscription = require('../src/LiveQuery/Subscription').Subscription;
let logger;
describe('Subscription', function() {
beforeEach(function() {
logger = require('../src/logger').logger;
spyOn(logger, 'error').and.callThrough();
});
it('can be initialized', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
expect(subscription.className).toBe('className');
expect(subscription.query).toEqual({ key : 'value' });
expect(subscription.hash).toBe('hash');
expect(subscription.clientRequestIds.size).toBe(0);
});
it('can check it has subscribing clients', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
expect(subscription.hasSubscribingClient()).toBe(false);
});
it('can check it does not have subscribing clients', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
expect(subscription.hasSubscribingClient()).toBe(true);
});
it('can add one request for one client', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
expect(subscription.clientRequestIds.size).toBe(1);
expect(subscription.clientRequestIds.get(1)).toEqual([1]);
});
it('can add requests for one client', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
subscription.addClientSubscription(1, 2);
expect(subscription.clientRequestIds.size).toBe(1);
expect(subscription.clientRequestIds.get(1)).toEqual([1, 2]);
});
it('can add requests for clients', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
subscription.addClientSubscription(1, 2);
subscription.addClientSubscription(2, 2);
subscription.addClientSubscription(2, 3);
expect(subscription.clientRequestIds.size).toBe(2);
expect(subscription.clientRequestIds.get(1)).toEqual([1, 2]);
expect(subscription.clientRequestIds.get(2)).toEqual([2, 3]);
});
it('can delete requests for nonexistent client', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.deleteClientSubscription(1, 1);
expect(logger.error).toHaveBeenCalled();
});
it('can delete nonexistent request for one client', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
subscription.deleteClientSubscription(1, 2);
expect(logger.error).toHaveBeenCalled();
expect(subscription.clientRequestIds.size).toBe(1);
expect(subscription.clientRequestIds.get(1)).toEqual([1]);
});
it('can delete some requests for one client', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
subscription.addClientSubscription(1, 2);
subscription.deleteClientSubscription(1, 2);
expect(logger.error).not.toHaveBeenCalled();
expect(subscription.clientRequestIds.size).toBe(1);
expect(subscription.clientRequestIds.get(1)).toEqual([1]);
});
it('can delete all requests for one client', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
subscription.addClientSubscription(1, 2);
subscription.deleteClientSubscription(1, 1);
subscription.deleteClientSubscription(1, 2);
expect(logger.error).not.toHaveBeenCalled();
expect(subscription.clientRequestIds.size).toBe(0);
});
it('can delete requests for multiple clients', function() {
var subscription = new Subscription('className', { key : 'value' }, 'hash');
subscription.addClientSubscription(1, 1);
subscription.addClientSubscription(1, 2);
subscription.addClientSubscription(2, 1);
subscription.addClientSubscription(2, 2);
subscription.deleteClientSubscription(1, 2);
subscription.deleteClientSubscription(2, 1);
subscription.deleteClientSubscription(2, 2);
expect(logger.error).not.toHaveBeenCalled();
expect(subscription.clientRequestIds.size).toBe(1);
expect(subscription.clientRequestIds.get(1)).toEqual([1]);
});
});