define [
	"utils/Modal"
], (Modal) ->
	describe "Modal", ->
		describe "initialization", ->
			beforeEach ->
				@modal = Modal.createModal
					title: "Test modal"
					message : "Test modal message"
					buttons: [{
						text  : "OK"
						class : "btn-primary"
					}, {
						text  : "Cancel"
						class : "btn-danger"
					}]
			afterEach ->
				@modal.remove()

			it "should display the modal", ->
				@modal.$el.is(":visible").should.equal true

			it "should include the buttons in reverse order", ->
				buttons = @modal.$(".modal-footer a")
				$(buttons[0]).text().should.equal "Cancel"
				$(buttons[0]).hasClass("btn-danger").should.equal true
				$(buttons[1]).text().should.equal "OK"
				$(buttons[1]).hasClass("btn-primary").should.equal true

			it "should include the title", ->
				@modal.$("h3").text().should.equal "Test modal"

			it "should include the message", ->
				@modal.$(".message").text().should.equal "Test modal message"
	
		describe "clicking buttons", ->
			beforeEach ->
				@callbackCalled = false
				@modal = Modal.createModal
					title: "Test modal"
					message : "Test modal message"
					buttons: [{
						text  : "OK"
						class : "btn-primary"
						callback : () =>
							@callbackCalled = true
					}]
				@modal.$(".modal-footer a").click()
			
			it "should call the callback", ->
				@callbackCalled.should.equal true

			it "should remove the modal", ->
				@modal.$el.is(":visible").should.equal false
				@modal.$el.parent().length.should.equal 0