komga/komga-webui/tests/unit/functions/book-spreads.spec.ts
2021-04-28 08:34:13 +08:00

137 lines
3.7 KiB
TypeScript

import {buildSpreads} from "@/functions/book-spreads";
import {PagedReaderLayout} from "@/types/enum-reader";
import {PageDtoWithUrl} from "@/types/komga-books";
describe("Single Page", () => {
const pageLayout = PagedReaderLayout.SINGLE_PAGE
test("given no pages then it should return no spreads", () => {
const pages = [] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(0)
})
test("given single page then it should return single spread with single page", () => {
const pages = [
{
number: 1,
} as PageDtoWithUrl,
] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(1)
expect(spreads[0].length).toEqual(1)
expect(spreads[0][0].number).toEqual(1)
})
})
describe("Double Pages", () => {
const pageLayout = PagedReaderLayout.DOUBLE_PAGES
test("given no pages then it should return no spreads", () => {
const pages = [] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(0)
})
test("given single page then it should return single spread with single page", () => {
const pages = [
{
number: 1,
} as PageDtoWithUrl,
] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(1)
expect(spreads[0].length).toEqual(1)
expect(spreads[0][0].number).toEqual(1)
})
test("given even pages then it should return correct spreads", () => {
const pages = [
{number: 1} as PageDtoWithUrl,
{number: 2} as PageDtoWithUrl,
{number: 3} as PageDtoWithUrl,
{number: 4} as PageDtoWithUrl,
{number: 5} as PageDtoWithUrl,
{number: 6} as PageDtoWithUrl,
] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(4)
expect(spreads[0].length).toEqual(1)
expect(spreads[0][0].number).toEqual(1)
expect(spreads[1].length).toEqual(2)
expect(spreads[1][0].number).toEqual(2)
expect(spreads[1][1].number).toEqual(3)
expect(spreads[2].length).toEqual(2)
expect(spreads[2][0].number).toEqual(4)
expect(spreads[2][1].number).toEqual(5)
expect(spreads[3].length).toEqual(1)
expect(spreads[3][0].number).toEqual(6)
})
test("given odd pages then it should return correct spreads", () => {
const pages = [
{number: 1} as PageDtoWithUrl,
{number: 2} as PageDtoWithUrl,
{number: 3} as PageDtoWithUrl,
{number: 4} as PageDtoWithUrl,
{number: 5} as PageDtoWithUrl,
] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(4)
expect(spreads[0].length).toEqual(1)
expect(spreads[0][0].number).toEqual(1)
expect(spreads[1].length).toEqual(2)
expect(spreads[1][0].number).toEqual(2)
expect(spreads[1][1].number).toEqual(3)
expect(spreads[2].length).toEqual(1)
expect(spreads[2][0].number).toEqual(4)
expect(spreads[3].length).toEqual(1)
expect(spreads[3][0].number).toEqual(5)
})
})
describe("Double Pages No Cover", () => {
const pageLayout = PagedReaderLayout.DOUBLE_NO_COVER
test("given no pages then it should return no spreads", () => {
const pages = [] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(0)
})
test("given single page then it should return single spread with single page", () => {
const pages = [
{
number: 1,
} as PageDtoWithUrl,
] as PageDtoWithUrl[]
const spreads = buildSpreads(pages, pageLayout)
expect(spreads.length).toEqual(1)
expect(spreads[0].length).toEqual(1)
expect(spreads[0][0].number).toEqual(1)
})
})