UNPKG

opds-web-client

Version:
129 lines (128 loc) 5.64 kB
"use strict"; var chai_1 = require("chai"); var React = require("react"); var enzyme_1 = require("enzyme"); var Breadcrumbs_1 = require("../Breadcrumbs"); var CatalogLink_1 = require("../CatalogLink"); describe("Breadcrumbs", function () { var data; beforeEach(function () { data = [{ id: "2nd id", text: "2nd title", url: "2nd url" }, { id: "last id", text: "last title", url: "last url" }]; }); it("shows links with bootstrap classes", function () { var wrapper = enzyme_1.shallow(React.createElement(Breadcrumbs_1.default, { links: data })); var list = wrapper.find("ol"); var links = wrapper.find(CatalogLink_1.default); chai_1.expect(list.hasClass("breadcrumb")).to.equal(true); chai_1.expect(links.length).to.equal(2); chai_1.expect(links.at(0).props().children).to.contain("2nd title"); chai_1.expect(links.at(0).props().collectionUrl).to.equal("2nd url"); // last link is wrapped in <strong> chai_1.expect(links.at(1).props().children.props.children).to.contain("last title"); chai_1.expect(links.at(1).props().collectionUrl).to.equal("last url"); }); }); describe("hierarchyComputeBreadcrumbs", function () { var collection = { id: "new id", url: "new url", title: "new title", lanes: [], books: [], navigationLinks: [] }; var collectionLink = { url: "new url", text: "new title" }; var history = []; it("returns only collection link without root or parent", function () { chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(collection, history)).to.deep.equal([collectionLink]); }); it("returns root and collection if parent not present", function () { var catalogRootLink = { url: "new root url", text: "new root url" }; var data = Object.assign({}, collection, { catalogRootLink: catalogRootLink }); chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([catalogRootLink, collectionLink]); }); it("provides default catalog root title", function () { var catalogRootLink = { url: "new root url", text: null }; var data = Object.assign({}, collection, { catalogRootLink: catalogRootLink }); chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([{ url: catalogRootLink.url, text: "Catalog" }, collectionLink]); }); it("returns only parent and collection if root not present", function () { var parentLink = { url: "new parent url", text: "new parent text" }; var data = Object.assign({}, collection, { parentLink: parentLink }); chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([parentLink, collectionLink]); }); it("returns only root and collection if parent is same as root", function () { var catalogRootLink = { url: "new root url", text: "new root text" }; var parentLink = { url: "new root url", text: "new root text" }; var data = Object.assign({}, collection, { catalogRootLink: catalogRootLink, parentLink: parentLink }); chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([catalogRootLink, collectionLink]); }); it("return only parent and collection if collection is same as root", function () { var catalogRootLink = { url: "new url", text: "new title" }; var parentLink = { url: "new parent url", text: "new parent text" }; var data = Object.assign({}, collection, { catalogRootLink: catalogRootLink, parentLink: parentLink }); chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([parentLink, collectionLink]); }); it("return only root and parent if collection is same as parent", function () { var catalogRootLink = { url: "new root url", text: "new root text" }; var parentLink = { url: "new url", text: "new title" }; var data = Object.assign({}, collection, { catalogRootLink: catalogRootLink, parentLink: parentLink }); chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([catalogRootLink, parentLink]); }); it("uses a custom comparator if passed one", function () { var catalogRootLink = { url: "new root url", text: "new root text" }; var data = Object.assign({}, collection, { catalogRootLink: catalogRootLink }); // no comparator chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history)).to.deep.equal([catalogRootLink, collectionLink]); // comparator that says links are equal var comparator = function (url1, url2) { return true; }; chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history, comparator)).to.deep.equal([collectionLink]); // comparator that says links are not equal comparator = function (url1, url2) { return false; }; chai_1.expect(Breadcrumbs_1.hierarchyComputeBreadcrumbs(data, history, comparator)).to.deep.equal([catalogRootLink, collectionLink]); }); });