UNPKG

opds-web-client

Version:
84 lines (83 loc) 4.04 kB
"use strict"; jest.autoMockOff(); var React = require("react"); var enzyme_1 = require("enzyme"); var Search_1 = require("../Search"); var routing_1 = require("./routing"); describe("Search", function () { it("fetches the search description", function () { var fetchSearchDescription = jest.genMockFunction(); var url = "test url"; var context = routing_1.mockRouterContext(); var search = enzyme_1.shallow(React.createElement(Search_1.default, {url: url, fetchSearchDescription: fetchSearchDescription}), { context: context }); expect(fetchSearchDescription.mock.calls.length).toEqual(1); expect(fetchSearchDescription.mock.calls[0][0]).toEqual("test url"); }); it("does not fetch the search description again if url doesn't change", function () { var fetchSearchDescription = jest.genMockFunction(); var url = "test url"; var searchData = { description: "description", shortName: "shortName", template: function (s) { return s; } }; var context = routing_1.mockRouterContext(); var wrapper = enzyme_1.shallow(React.createElement(Search_1.default, {url: url, fetchSearchDescription: fetchSearchDescription}), { context: context }); wrapper.setProps({ url: url, searchData: searchData }); expect(fetchSearchDescription.mock.calls.length).toEqual(1); }); it("shows the search form with bootstrap classes", function () { var searchData = { description: "description", shortName: "shortName", template: function (s) { return s; } }; var context = routing_1.mockRouterContext(); var wrapper = enzyme_1.shallow(React.createElement(Search_1.default, {searchData: searchData, navigate: jest.genMockFunction()}), { context: context }); var form = wrapper.find("form"); var input = wrapper.find("input"); var button = wrapper.find("button"); expect(form.hasClass("form-inline")).toBe(true); expect(input).toBeTruthy(); expect(input.props().placeholder).toBe("shortName"); expect(input.hasClass("form-control")).toBe(true); expect(button).toBeTruthy(); expect(button.hasClass("btn")).toBe(true); }); it("fetches the search feed", function () { var navigate = jest.genMockFunction(); var searchData = { description: "description", shortName: "shortName", template: function (s) { return s + " template"; } }; var push = jest.genMockFunction(); var context = routing_1.mockRouterContext(push); var wrapper = enzyme_1.mount(React.createElement(Search_1.default, {searchData: searchData, navigate: navigate}), { context: context }); var form = wrapper.find("form").first(); expect(form).toBeTruthy(); var input = wrapper.find("input").get(0); input.value = "test"; form.simulate("submit"); expect(push.mock.calls.length).toEqual(1); expect(push.mock.calls[0][0]).toBe(context.pathFor("test template", null)); }); it("escapes search terms", function () { var navigate = jest.genMockFunction(); var searchData = { description: "description", shortName: "shortName", template: function (s) { return s + " template"; } }; var push = jest.genMockFunction(); var context = routing_1.mockRouterContext(push); var wrapper = enzyme_1.mount(React.createElement(Search_1.default, {searchData: searchData, navigate: navigate}), { context: context }); var form = wrapper.find("form").first(); expect(form).toBeTruthy(); var input = wrapper.find("input").get(0); input.value = "Indésirable"; form.simulate("submit"); expect(push.mock.calls.length).toEqual(1); expect(push.mock.calls[0][0]).toBe(context.pathFor("Ind%C3%A9sirable template", null)); }); });