 
     it "has a backdrop", ->
       expect(@dialog.next(".modal-backdrop")).to.be.ok
+
+  describe "when creating dialog with a button", ->
+    beforeEach ->
+      @create = (button = {}) =>
+        @dialog = bootbox.dialog
+          message: "test"
+          buttons:
+            one: button
+
+    describe "when the button has no label", ->
+
+      it "throws an error", ->
+        expect(@create).to.throw /button with key one requires a label/
+
+    describe "when the button has no callback", ->
+      beforeEach ->
+        @create
+          label: "My Label"
+
+      it "shows a footer", ->
+        expect(@exists(".modal-footer")).to.be.ok
+
+      it "shows one button", ->
+        expect(@find(".btn").length).to.equal 1
+
+      it "shows the correct button text", ->
+        expect(@text(".btn")).to.equal "My Label"
+
+      it "applies the correct button class", ->
+        expect(@class(".btn", "btn-primary")).to.be.true
+
+    describe "when the button has a label and callback", ->
+      beforeEach ->
+        @callback = sinon.spy()
+
+        @create
+          label: "Another Label"
+          callback: @callback
+
+        @hidden = sinon.spy @dialog, "modal"
+
+      it "shows a footer", ->
+        expect(@exists(".modal-footer")).to.be.ok
+
+      it "shows the correct button text", ->
+        expect(@text(".btn")).to.equal "Another Label"
+
+      describe "when dismissing the dialog by clicking OK", ->
+        beforeEach ->
+          @dialog.find(".btn-primary").trigger "click"
+
+        it "should invoke the callback", ->
+          expect(@callback).to.have.been.called
+
+        it "should hide the modal", ->
+          expect(@hidden).to.have.been.calledWithExactly "hide"

describe "bootbox.dialog", ->
  beforeEach ->
    invoke = (s, method) => @dialog.find(s)[method]()

    @text   = (s) -> invoke s, "text"
    @html   = (s) -> invoke s, "html"
    @exists = (s) -> @dialog.find(s).length isnt 0

  describe "invalid usage tests", ->


    it "adds the fade class to the dialog", ->
      expect(@dialog.hasClass("fade")).to.be.true

    it "shows the expected message", ->
      expect(@text(".bootbox-body")).to.equal "test"

    it "does not have a header", ->
