Esempio n. 1
0
  it('provides a way to register a listener that is invoked once', function() {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    emitter.once('type1', callback);

    emitter.emit('type1', 'data');
    emitter.emit('type1', 'data');

    expect(callback.mock.calls.length).toBe(1);
    expect(callback.mock.calls[0][0]).toBe('data');
  });
Esempio n. 2
0
     'the midst of an emitting cycle', function() {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    emitter.addListener('type1', callback);

    callback.mockImplementation(function(data) {
      emitter.removeCurrentListener();
    });

    emitter.emit('type1', 'data');
    emitter.emit('type1', 'data');

    expect(callback.mock.calls.length).toBe(1);
    expect(callback.mock.calls[0][0]).toBe('data');
  });
Esempio n. 3
0
  it('does not notify events of different types', function() {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    emitter.addListener('type1', callback);

    emitter.emit('type2');

    expect(callback.mock.calls.length).toBe(0);
  });
Esempio n. 4
0
     'registered for', function () {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    emitter.addListener('type1', callback);

    emitter.emit('type1', 'data');

    expect(callback.mock.calls[0][0]).toBe('data');
  });
Esempio n. 5
0
  it('does not notify the listener of events after it is removed', function() {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    var subscription = emitter.addListener('type1', callback);
    subscription.remove();

    emitter.emit('type1');

    expect(callback.mock.calls.length).toBe(0);
  });
Esempio n. 6
0
  it('does not notify of events after all listeners are removed', function() {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    emitter.addListener('type1', callback);
    emitter.removeAllListeners();

    emitter.emit('type1');

    expect(callback.mock.calls.length).toBe(0);
  });
Esempio n. 7
0
     'been removed', function() {
    var emitter = new BaseEventEmitter();
    var callback = jest.genMockFunction();

    var subscription = emitter.addListener('type1', function() {});
    emitter.addListener('type1', callback);
    subscription.remove();

    emitter.emit('type1', 'data');

    expect(callback.mock.calls[0][0]).toBe('data');
  });
Esempio n. 8
0
     'emitted, even if more were added', function() {
    var emitter = new BaseEventEmitter();
    var callback1 = jest.genMockFunction();
    var callback2 = jest.genMockFunction();

    callback1.mockImplementation(function() {
      emitter.addListener('type1', callback2);
    });

    emitter.addListener('type1', callback1);

    emitter.emit('type1');

    expect(callback1.mock.calls.length).toBe(1);
    expect(callback2.mock.calls.length).toBe(0);
  });
Esempio n. 9
0
  it('allows for the passing of the context when handling events', function() {
    var emitter = new BaseEventEmitter();
    var calledContext;
    var callback = jest.genMockFunction();
    callback.mockImplementation(function() {
      calledContext = this;
    });
    var context = {};

    emitter.addListener('type1', callback, context);

    emitter.emit('type1', 'data');

    expect(calledContext).toBe(context);
    expect(callback.mock.calls[0][0]).toBe('data');
  });
Esempio n. 10
0
     'emitted but later removed during the event loop', function() {
    var emitter = new BaseEventEmitter();
    var callback1 = jest.genMockFunction();
    var callback2 = jest.genMockFunction();

    callback1.mockImplementation(function() {
      subscription.remove();
    });

    emitter.addListener('type1', callback1);
    var subscription = emitter.addListener('type1', callback2);

    emitter.emit('type1');

    expect(callback1.mock.calls.length).toBe(1);
    expect(callback2.mock.calls.length).toBe(0);
  });