UNPKG

opds-web-client

Version:
114 lines (113 loc) 4.94 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var chai_1 = require("chai"); var loans_1 = require("../loans"); var DataFetcher_1 = require("../../DataFetcher"); var actions_1 = require("../../actions"); var OPDSDataAdapter_1 = require("../../OPDSDataAdapter"); var fetcher = new DataFetcher_1.default({ adapter: OPDSDataAdapter_1.adapter }); var actions = new actions_1.default(fetcher); var collectionData = { url: "collection url", title: "title", id: "id", books: [], lanes: [], navigationLinks: [], shelfUrl: "loans url" }; var loansData = { url: "collection url", title: "title", id: "id", books: [ { id: "book id", url: "book url", title: "book title" } ], lanes: [], navigationLinks: [] }; describe("loans reducer", function () { var initState = { url: null, books: [] }; it("returns the initial state", function () { (0, chai_1.expect)((0, loans_1.default)(undefined, {})).to.deep.equal(initState); }); it("handles COLLECTION_LOAD", function () { var action = actions.load(actions_1.default.COLLECTION, collectionData); var newState = __assign(__assign({}, initState), { url: "loans url" }); (0, chai_1.expect)((0, loans_1.default)(initState, action)).to.deep.equal(newState); }); it("handles COLLECTION_LOAD for loans feed", function () { var oldState = __assign(__assign({}, initState), { url: "loans url" }); var loansCollectionData = __assign(__assign({}, collectionData), { books: loansData.books }); var action = actions.load(actions_1.default.COLLECTION, loansCollectionData, "loans url"); var newState = __assign(__assign({}, oldState), { books: loansData.books }); (0, chai_1.expect)((0, loans_1.default)(oldState, action)).to.deep.equal(newState); }); it("handles LOANS_LOAD", function () { var oldState = __assign(__assign({}, initState), { url: "loans url" }); var action = actions.load(actions_1.default.LOANS, loansData); var newState = __assign(__assign({}, oldState), { books: loansData.books }); (0, chai_1.expect)((0, loans_1.default)(oldState, action)).to.deep.equal(newState); }); it("clears books on CLEAR_AUTH_CREDENTIALS", function () { var oldState = __assign(__assign({}, initState), { books: loansData.books }); var action = actions.clearAuthCredentials(); var newState = __assign(__assign({}, oldState), { books: [] }); (0, chai_1.expect)((0, loans_1.default)(oldState, action)).to.deep.equal(newState); }); it("removes book that's no longer borrowed on UPDATE_BOOK_LOAD", function () { var oldState = __assign(__assign({}, initState), { books: loansData.books }); var newBookData = { id: "book id", url: "book url", title: "new book title" }; var action = actions.load(actions_1.default.UPDATE_BOOK, newBookData); var newState = __assign(__assign({}, oldState), { books: [] }); (0, chai_1.expect)((0, loans_1.default)(oldState, action)).to.deep.equal(newState); }); it("adds newly borrowed book on UPDATE_BOOK_LOAD", function () { var oldState = __assign(__assign({}, initState), { books: loansData.books }); var newBookData = { id: "new book id", url: "new book url", title: "new book title", fulfillmentLinks: [ { url: "url", type: "application/pdf", indirectType: "" } ] }; var action = actions.load(actions_1.default.UPDATE_BOOK, newBookData); var newState = __assign(__assign({}, oldState), { books: [loansData.books[0], newBookData] }); (0, chai_1.expect)((0, loans_1.default)(oldState, action)).to.deep.equal(newState); }); it("adds newly reserved book on UPDATE_BOOK_LOAD", function () { var oldState = __assign(__assign({}, initState), { books: loansData.books }); var newBookData = { id: "new book id", url: "new book url", title: "new book title", availability: { status: "reserved" } }; var action = actions.load(actions_1.default.UPDATE_BOOK, newBookData); var newState = __assign(__assign({}, oldState), { books: [loansData.books[0], newBookData] }); (0, chai_1.expect)((0, loans_1.default)(oldState, action)).to.deep.equal(newState); }); });