You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.0 KiB
JavaScript

describe("handlers", function(){
describe("when adding a handler", function(){
var handlers, handler, setHandleredHandler, ctx;
beforeEach(function(){
handlers = new Wreqr.Handlers();
spyOn(handlers, "trigger");
ctx = {};
setHandleredHandler = jasmine.createSpy("a setHandlered handler");
handlers.setHandler("foo", setHandleredHandler, ctx);
handler = handlers.getHandler("foo");
handler();
});
it("should trigger a handler:add event", function(){
expect(handlers.trigger).toHaveBeenCalledWith("handler:add", "foo", setHandleredHandler, ctx);
});
});
describe("when requesting a handler by name", function(){
describe("and a handler has been setHandlered with that name", function(){
var handler, setHandleredHandler, ctx;
beforeEach(function(){
var handlers = new Wreqr.Handlers();
ctx = {};
setHandleredHandler = jasmine.createSpy("a setHandlered handler");
handlers.setHandler("handler", setHandleredHandler, ctx);
handler = handlers.getHandler("handler");
handler();
});
it("should return the setHandlered handler callback", function(){
expect(setHandleredHandler).toHaveBeenCalled();
});
it("should return the setHandlered handler context", function(){
expect(setHandleredHandler.mostRecentCall.object).toBe(ctx);
});
});
describe("and a handler has not been setHandlered with that name", function(){
var handlers, handle;
beforeEach(function(){
handlers = new Wreqr.Handlers();
handle = handlers.getHandler();
});
it("should thrown an error saying a handler was not found", function(){
expect(handle).toBeUndefined;
});
});
});
describe("when removing a named handler", function(){
var handlers, setHandleredHandler, ctx, handle;
beforeEach(function(){
handlers = new Wreqr.Handlers();
ctx = {};
setHandleredHandler = jasmine.createSpy("a setHandlered handler");
handlers.setHandler("handler", setHandleredHandler, ctx);
handlers.removeHandler("handler");
handle = handlers.getHandler("handler");
});
it("should no longer return the requested hander", function(){
expect(handle).toBeUndefined;
});
});
describe("when removing all handlers", function(){
var handlers, setHandleredHandler, ctx, handle1, handle2;
beforeEach(function(){
handlers = new Wreqr.Handlers();
ctx = {};
setHandleredHandler = jasmine.createSpy("a setHandlered handler");
handlers.setHandler("handler1", setHandleredHandler, ctx);
handlers.setHandler("handler2", setHandleredHandler, ctx);
handlers.removeAllHandlers();
handle1 = handlers.getHandler("handler1");
handle2 = handlers.getHandler("handler2");
});
it("should no longer return the requested handler", function(){
expect(handle1).toBeUndefined;
expect(handle2).toBeUndefined;
});
});
});