85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
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)
|
|
})
|
|
})
|
|
})
|