opds-web-client
Version:
107 lines (106 loc) • 5.09 kB
JavaScript
autoMockOff();
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: jest.genMockFunction(), saveCredentials: jest.genMockFunction(), 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");
expect(title.text()).toBe("Intergalactic Spy Network Login");
});
it("shows username input", function () {
var input = wrapper.find("input[type='text']");
expect(input.prop("placeholder")).toBe("code name");
});
it("shows password input", function () {
var input = wrapper.find("input[type='password']");
expect(input.prop("placeholder")).toBe("secret password");
});
it("shows submit button", function () {
var input = wrapper.find("input[type='submit']");
expect(input.prop("value")).toBe("Submit");
});
it("shows error", function () {
var error = wrapper.find(".authFormError");
expect(error.text()).toBe("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 = jest.genMockFunction();
saveCredentials = jest.genMockFunction();
callback = jest.genMockFunction();
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();
expect(isValid).toBe(false);
expect(wrapper.state("error")).toBe("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();
expect(isValid).toBe(false);
expect(wrapper.state("error")).toBe("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();
expect(isValid).toBe(false);
expect(wrapper.state("error")).toBe("code name and secret password are required");
// nothing blank
username.value = "doubleohseven";
isValid = wrapper.instance().validate();
expect(isValid).toBe(true);
expect(wrapper.state("error")).toBe(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 = jest.genMockFunction();
validate.mockReturnValue(true);
wrapper.instance().validate = validate;
form = wrapper.find("form");
form.simulate("submit");
});
it("validates", function () {
expect(validate.mock.calls.length).toBe(1);
});
it("saves credentials", function () {
expect(saveCredentials.mock.calls.length).toBe(1);
expect(saveCredentials.mock.calls[0][0]).toBe(credentials);
});
it("hides", function () {
expect(hide.mock.calls.length).toBe(1);
});
it("executes callback", function () {
expect(callback.mock.calls.length).toBe(1);
expect(callback.mock.calls[0][0]).toBe(credentials);
});
});
it("updates error from props", function () {
wrapper.setProps(Object.assign({}, wrapper.props(), { error: "new error" }));
expect(wrapper.state("error")).toBe("new error");
});
});
});
;
jest.