import { lenses, getSuitableLenses, getLensRenderers } from "../lenses" import rawLens from "../rawLens" describe("getSuitableLenses", () => { test("returns raw lens if no content type reported (null/undefined)", () => { const nullResult = getSuitableLenses({ headers: { "content-type": null, }, }) const undefinedResult = getSuitableLenses({ headers: {}, }) expect(nullResult).toHaveLength(1) expect(nullResult).toContainEqual(rawLens) expect(undefinedResult).toHaveLength(1) expect(undefinedResult).toContainEqual(rawLens) }) const contentTypes = { JSON: [ "application/json", "application/ld+json", "application/hal+json; charset=utf8", ], Image: [ "image/gif", "image/jpeg; foo=bar", "image/png", "image/bmp", "image/svg+xml", "image/x-icon", "image/vnd.microsoft.icon", ], HTML: ["text/html", "application/xhtml+xml", "text/html; charset=utf-8"], XML: [ "text/xml", "application/xml", "application/xhtml+xml; charset=utf-8", ], } lenses .filter(({ lensName }) => lensName !== rawLens.lensName) .forEach((el) => { test(`returns ${el.lensName} lens for its content-types`, () => { contentTypes[el.lensName].forEach((contentType) => { expect( getSuitableLenses({ headers: { "content-type": contentType, }, }) ).toContainEqual(el) }) }) test(`returns Raw Lens along with ${el.lensName} for the content types`, () => { contentTypes[el.lensName].forEach((contentType) => { expect( getSuitableLenses({ headers: { "content-type": contentType, }, }) ).toContainEqual(rawLens) }) }) }) }) describe("getLensRenderers", () => { test("returns all the lens renderers", () => { const res = getLensRenderers() lenses.forEach(({ renderer, rendererImport }) => { expect(res).toHaveProperty(renderer) expect(res[renderer]).toBe(rendererImport) }) }) })