opds-web-client
Version:
107 lines (106 loc) • 5.22 kB
JavaScript
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");
});
});
});
;