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
106 lines
3.0 KiB
JavaScript
10 years ago
|
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;
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|