123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- describe("Bootbox", function() {
- "use strict";
- it("is attached to the window object", function() {
- expect(window.bootbox).to.be.an("object");
- });
- it("exposes the correct public API", function() {
- expect(bootbox.alert).to.be.a("function");
- expect(bootbox.confirm).to.be.a("function");
- expect(bootbox.dialog).to.be.a("function");
- expect(bootbox.setDefaults).to.be.a("function");
- expect(bootbox.hideAll).to.be.a("function");
- });
- describe("hideAll", function() {
- beforeEach(function() {
- this.hidden = sinon.spy($.fn, "modal");
- bootbox.hideAll();
- });
- it("should hide all .bootbox modals", function() {
- expect(this.hidden).to.have.been.calledWithExactly("hide");
- });
- });
- describe("event listeners", function() {
- describe("hidden.bs.modal", function() {
- beforeEach(function() {
- this.dialog = bootbox.alert("hi");
- this.removed = sinon.stub(this.dialog, "remove");
- this.e = function(target) {
- $(this.dialog).trigger($.Event("hidden.bs.modal", {
- target: target
- }));
- };
- });
- afterEach(function() {
- this.removed.restore();
- });
- describe("when triggered with the wrong target", function() {
- beforeEach(function() {
- this.e({an: "object"});
- });
- it("does not remove the dialog", function() {
- expect(this.removed).not.to.have.been.called;
- });
- });
- describe("when triggered with the correct target", function() {
- beforeEach(function() {
- this.e(this.dialog.get(0));
- });
- it("removes the dialog", function() {
- expect(this.removed).to.have.been.called;
- });
- });
- });
- });
- describe("If $.fn.modal is undefined", function() {
- beforeEach(function() {
- this.oldModal = window.jQuery.fn.modal;
- window.jQuery.fn.modal = undefined;
- });
- afterEach(function() {
- window.jQuery.fn.modal = this.oldModal;
- });
- describe("When invoking a dialog", function() {
- beforeEach(function() {
- try {
- bootbox.alert("Hi", function() {});
- } catch (e) {
- this.e = e;
- }
- });
- it("throws the correct error", function() {
- expect(this.e.message).to.contain("$.fn.modal is not defined");
- });
- });
- });
- describe("adding and removing locales", function() {
- describe("bootbox.addLocale", function() {
- describe("with invalid values", function() {
- beforeEach(function() {
- try {
- bootbox.addLocale("xy", {
- OK: "BTN1"
- });
- } catch (e) {
- this.e = e;
- }
- });
- it("throws the expected error", function() {
- expect(this.e.message).to.equal("Please supply a translation for 'CANCEL'");
- });
- });
- describe("with invalid values", function() {
- beforeEach(function() {
- bootbox
- .addLocale("xy", {
- OK: "BTN1",
- CANCEL: "BTN2",
- CONFIRM: "BTN3"
- })
- .setLocale("xy");
- var d1 = bootbox.alert("foo");
- var d2 = bootbox.confirm("foo", function() { return true; });
- this.labels = {
- ok: d1.find(".btn:first").text(),
- cancel: d2.find(".btn:first").text(),
- confirm: d2.find(".btn:last").text()
- };
- });
- it("shows the expected OK translation", function() {
- expect(this.labels.ok).to.equal("BTN1");
- });
- it("shows the expected CANCEL translation", function() {
- expect(this.labels.cancel).to.equal("BTN2");
- });
- it("shows the expected PROMPT translation", function() {
- expect(this.labels.confirm).to.equal("BTN3");
- });
- });
- });
- describe("bootbox.removeLocale", function () {
- beforeEach(function () {
- bootbox.removeLocale("xy");
- var d1 = bootbox.alert("foo");
- var d2 = bootbox.confirm("foo", function () { return true; });
- this.labels = {
- ok: d1.find(".btn:first").text(),
- cancel: d2.find(".btn:first").text(),
- confirm: d2.find(".btn:last").text()
- };
- });
- it("falls back to the default OK translation", function () {
- expect(this.labels.ok).to.equal("OK");
- });
- it("falls back to the default CANCEL translation", function () {
- expect(this.labels.cancel).to.equal("Cancel");
- });
- it("falls back to the default PROMPT translation", function () {
- expect(this.labels.confirm).to.equal("OK");
- });
- });
- });
- describe("backdrop variations", function() {
- beforeEach(function() {
- this.e = function(target) {
- $(this.dialog).trigger($.Event("click.dismiss.bs.modal", {
- target: target
- }));
- };
- });
- describe("with the default value", function() {
- beforeEach(function() {
- this.callback = sinon.spy();
- this.dialog = bootbox.alert("hi", this.callback);
- });
- describe("When triggering the backdrop click dismiss event", function() {
- beforeEach(function() {
- this.e({an: "object"});
- });
- it("does not invoke the callback", function() {
- expect(this.callback).not.to.have.been.called;
- });
- });
- });
- describe("when set to false", function() {
- beforeEach(function() {
- this.callback = sinon.spy();
- this.dialog = bootbox.alert({
- message: "hi",
- callback: this.callback,
- backdrop: false
- });
- });
- describe("When triggering the backdrop click dismiss event", function() {
- describe("With the wrong target", function() {
- beforeEach(function() {
- this.e({an: "object"});
- });
- it("does not invoke the callback", function() {
- expect(this.callback).not.to.have.been.called;
- });
- });
- describe("With the correct target", function() {
- beforeEach(function() {
- this.e(this.dialog.get(0));
- });
- it("invokes the callback", function() {
- expect(this.callback).to.have.been.called;
- });
- it("should pass the dialog as `this`", function() {
- expect(this.callback.thisValues[0]).to.equal(this.dialog);
- });
- });
- });
- });
- describe("when set to true", function() {
- beforeEach(function() {
- this.callback = sinon.spy();
- this.dialog = bootbox.alert({
- message: "hi",
- callback: this.callback,
- backdrop: true
- });
- });
- describe("When triggering the backdrop click dismiss event", function() {
- describe("With the wrong target", function() {
- beforeEach(function() {
- this.e({an: "object"});
- });
- it("does not invoke the callback", function() {
- expect(this.callback).not.to.have.been.called;
- });
- });
- describe("With the correct target", function() {
- beforeEach(function() {
- this.e(this.dialog.children(".modal-backdrop").get(0));
- });
- it("invokes the callback", function() {
- expect(this.callback).to.have.been.called;
- });
- it("should pass the dialog as `this`", function() {
- expect(this.callback.thisValues[0]).to.equal(this.dialog);
- });
- });
- });
- });
- });
- });
|