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.

56 lines
1.4 KiB
JavaScript

describe("handler - set from hash", function(){
describe("when adding multiple handlers via an object literal / hash", function(){
var handlers, hndlrs;
beforeEach(function(){
hndlrs = {
"foo": jasmine.createSpy("foo handler"),
"bar": jasmine.createSpy("bar handler")
};
handlers = new Wreqr.Handlers();
handlers.setHandlers(hndlrs);
});
it("should add all named handlers", function(){
expect(handlers.hasHandler("foo")).toBe(true);
expect(handlers.hasHandler("bar")).toBe(true);
});
it("should execute the handler", function(){
handlers.getHandler("foo")();
handlers.getHandler("bar")();
expect(hndlrs.foo).toHaveBeenCalled();
expect(hndlrs.bar).toHaveBeenCalled();
});
});
describe("when the object literal values are objects with a callback and context attribute", function(){
var handlers, hndlrs, ctx;
beforeEach(function(){
ctx = {};
hndlrs = {
"foo": {
callback: jasmine.createSpy("foo handler"),
context: ctx
}
};
handlers = new Wreqr.Handlers();
handlers.setHandlers(hndlrs);
handlers.getHandler("foo")();
});
it("should execute the handler callback with the specified context", function(){
expect(hndlrs.foo.callback).toHaveBeenCalled();
expect(hndlrs.foo.callback.mostRecentCall.object).toBe(ctx);
});
});
});