jasmine-ajax/spec/eventBusSpec.js

71 lines
2.0 KiB
JavaScript
Raw Normal View History

describe('EventBus', function() {
beforeEach(function() {
this.bus = getJasmineRequireObj().AjaxEventBus()();
});
it('calls an event listener', function() {
var callback = jasmine.createSpy('callback');
this.bus.addEventListener('foo', callback);
this.bus.trigger('foo');
expect(callback).toHaveBeenCalled();
});
it('only triggers callbacks for the specified event', function() {
var fooCallback = jasmine.createSpy('foo'),
barCallback = jasmine.createSpy('bar');
this.bus.addEventListener('foo', fooCallback);
this.bus.addEventListener('bar', barCallback);
this.bus.trigger('foo');
expect(fooCallback).toHaveBeenCalled();
expect(barCallback).not.toHaveBeenCalled();
});
it('calls all the callbacks for the specified event', function() {
var callback1 = jasmine.createSpy('callback');
var callback2 = jasmine.createSpy('otherCallback');
this.bus.addEventListener('foo', callback1);
this.bus.addEventListener('foo', callback2);
this.bus.trigger('foo');
expect(callback1).toHaveBeenCalled();
expect(callback2).toHaveBeenCalled();
});
it('works if there are no callbacks for the event', function() {
var bus = this.bus;
expect(function() {
bus.trigger('notActuallyThere');
}).not.toThrow();
});
it('does not call listeners that have been removed', function() {
var callback = jasmine.createSpy('callback');
this.bus.addEventListener('foo', callback);
this.bus.removeEventListener('foo', callback);
this.bus.trigger('foo');
expect(callback).not.toHaveBeenCalled();
});
it('only removes the specified callback', function() {
var callback1 = jasmine.createSpy('callback');
var callback2 = jasmine.createSpy('otherCallback');
this.bus.addEventListener('foo', callback1);
this.bus.addEventListener('foo', callback2);
this.bus.removeEventListener('foo', callback2);
this.bus.trigger('foo');
expect(callback1).toHaveBeenCalled();
expect(callback2).not.toHaveBeenCalled();
});
});