diff --git a/helpers/lenses/__tests__/lenses.spec.js b/helpers/lenses/__tests__/lenses.spec.js new file mode 100644 index 000000000..cf52b7391 --- /dev/null +++ b/helpers/lenses/__tests__/lenses.spec.js @@ -0,0 +1,61 @@ +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) + }) + + lenses + .filter((e) => e.lensName != rawLens.lensName) + .forEach((el) => { + test(`returns ${el.lensName} lens for its content-types`, () => { + el.supportedContentTypes.forEach((contentType) => { + expect( + getSuitableLenses({ + headers: { + "content-type": contentType, + }, + }) + ).toContainEqual(el) + }) + }) + + test(`returns Raw Lens along with ${el.lensName} for the content types`, () => { + el.supportedContentTypes.forEach((contentType) => { + expect( + getSuitableLenses({ + headers: { + "content-type": contentType, + }, + }) + ).toContainEqual(rawLens) + }) + }) + }) +}) + +describe("getLensRenderers", () => { + test("returns all the lens renderers", () => { + const res = getLensRenderers() + + lenses.forEach((lens) => { + expect(res).toHaveProperty(lens.renderer) + expect(res[lens.renderer]).toBe(lens.rendererImport) + }) + }) +})