UNPKG

opds-web-client

Version:
107 lines (106 loc) 5.22 kB
"use strict"; var chai_1 = require("chai"); var sinon_1 = require("sinon"); var React = require("react"); var enzyme_1 = require("enzyme"); var BasicAuthForm_1 = require("../BasicAuthForm"); describe("BasicAuthForm", function () { describe("rendering", function () { var wrapper; beforeEach(function () { wrapper = enzyme_1.shallow(React.createElement(BasicAuthForm_1.default, {hide: sinon_1.stub(), saveCredentials: sinon_1.stub(), title: "Intergalactic Spy Network", loginLabel: "code name", passwordLabel: "secret password", error: "you forgot the secret password! what kind of spy arre you?"})); }); it("shows title", function () { var title = wrapper.find("h3"); chai_1.expect(title.text()).to.equal("Intergalactic Spy Network Login"); }); it("shows username input", function () { var input = wrapper.find("input[type='text']"); chai_1.expect(input.prop("placeholder")).to.equal("code name"); }); it("shows password input", function () { var input = wrapper.find("input[type='password']"); chai_1.expect(input.prop("placeholder")).to.equal("secret password"); }); it("shows submit button", function () { var input = wrapper.find("input[type='submit']"); chai_1.expect(input.prop("value")).to.equal("Submit"); }); it("shows error", function () { var error = wrapper.find(".error"); chai_1.expect(error.text()).to.equal("you forgot the secret password! what kind of spy arre you?"); }); }); describe("behavior", function () { var wrapper; var hide; var saveCredentials; var callback; beforeEach(function () { hide = sinon_1.stub(); saveCredentials = sinon_1.stub(); callback = sinon_1.stub(); wrapper = enzyme_1.mount(React.createElement(BasicAuthForm_1.default, {hide: hide, saveCredentials: saveCredentials, callback: callback, title: "Intergalactic Spy Network", loginLabel: "code name", passwordLabel: "secret password", error: "you forgot the secret password! what kind of spy arre you?"})); }); it("validates", function () { // both fields blank var isValid = wrapper.instance().validate(); chai_1.expect(isValid).to.equal(false); chai_1.expect(wrapper.state("error")).to.equal("code name and secret password are required"); // password blank var username = wrapper.find("input[type='text']").get(0); username.value = "doubleohseven"; isValid = wrapper.instance().validate(); chai_1.expect(isValid).to.equal(false); chai_1.expect(wrapper.state("error")).to.equal("code name and secret password are required"); // username blank username.value = ""; var password = wrapper.find("input[type='password']").get(0); password.value = "thenameisbond"; isValid = wrapper.instance().validate(); chai_1.expect(isValid).to.equal(false); chai_1.expect(wrapper.state("error")).to.equal("code name and secret password are required"); // nothing blank username.value = "doubleohseven"; isValid = wrapper.instance().validate(); chai_1.expect(isValid).to.equal(true); chai_1.expect(wrapper.state("error")).to.equal(null); }); describe("submission", function () { var validate; var form; var credentials; var username; var password; beforeEach(function () { username = wrapper.find("input[type='text']").get(0); username.value = "doubleohseven"; password = wrapper.find("input[type='password']").get(0); password.value = "thenameisbond"; credentials = wrapper.instance().generateCredentials("doubleohseven", "thenameisbond"); validate = sinon_1.stub().returns(true); wrapper.instance().validate = validate; form = wrapper.find("form"); form.simulate("submit"); }); it("validates", function () { chai_1.expect(validate.callCount).to.equal(1); }); it("saves credentials", function () { chai_1.expect(saveCredentials.callCount).to.equal(1); chai_1.expect(saveCredentials.args[0][0]).to.equal(credentials); }); it("hides", function () { chai_1.expect(hide.callCount).to.equal(1); }); it("executes callback", function () { chai_1.expect(callback.callCount).to.equal(1); chai_1.expect(callback.args[0][0]).to.equal(credentials); }); }); it("updates error from props", function () { wrapper.setProps(Object.assign({}, wrapper.props(), { error: "new error" })); chai_1.expect(wrapper.state("error")).to.equal("new error"); }); }); });