describe("AspectEdit", function() { describe("initialize", function() { it("calls draggable on ul .person", function() { spyOn($.fn, "draggable"); AspectEdit.initialize(); expect($.fn.draggable).toHaveBeenCalledWith( {revert: true, start: AspectEdit.startDrag, drag: AspectEdit.duringDrag, stop: AspectEdit.stopDrag}); expect($.fn.draggable.mostRecentCall.object.selector).toEqual("ul .person"); }); it("calls droppable on .aspect ul.dropzone", function() { spyOn($.fn, "droppable"); AspectEdit.initialize(); expect($.fn.droppable).toHaveBeenCalledWith({hoverClass: 'active', drop: AspectEdit.onDropMove}); expect($.fn.droppable.calls[0].object.selector).toEqual(".aspect ul.dropzone"); }); it("sets up the click event on .delete", function() { spyOn($.fn, "live"); AspectEdit.initialize(); expect($.fn.live).toHaveBeenCalledWith("click", AspectEdit.deletePerson); expect($.fn.live.calls[0].object.selector).toEqual(".delete"); }); it("sets up the focus event on aspect name", function() { spyOn($.fn, "live"); AspectEdit.initialize(); expect($.fn.live).toHaveBeenCalledWith('focus', AspectEdit.changeName); expect($.fn.live.calls[1].object.selector).toEqual(".aspect h3"); }) }); describe("startDrag", function() { beforeEach(function() { $('#jasmine_content').html( '
  • ' + ' Alexander Hamiltom' + '
  • ' ); }); it("animates the image", function() { spyOn(AspectEdit, "animateImage"); $.proxy(AspectEdit.startDrag, $('.person.ui-draggable'))(); expect(AspectEdit.animateImage).toHaveBeenCalled(); expect(AspectEdit.animateImage.mostRecentCall.args[0]).toHaveClass("avatar"); }); it("fades in the drag and drop text", function() { spyOn($.fn, "fadeIn"); $.proxy(AspectEdit.startDrag, $('.person.ui-draggable'))(); expect($.fn.fadeIn).toHaveBeenCalledWith(100); expect($.fn.fadeIn.mostRecentCall.object.selector).toEqual(".draggable_info"); }); }); describe("decrementRequestsCounter", function() { describe("when there is one request", function() { it("removes the counter from the new requests div", function() { $('#jasmine_content').html("
    Requests (1)
    "); AspectEdit.decrementRequestsCounter(); expect($('.new_requests').first().html()).toEqual("Requests"); }); }); describe("when there is more than one request", function() { it("decrements the request counter", function() { $('#jasmine_content').html("
    Requests (67)
    "); AspectEdit.decrementRequestsCounter(); expect($('.new_requests').first().html()).toEqual("Requests (66)"); }); }); describe("error cases", function() { it("fails silently if there are no requests", function() { $('#jasmine_content').html("
    Requests
    "); AspectEdit.decrementRequestsCounter(); expect($('.new_requests').first().html()).toEqual("Requests"); }); }); }); });