UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

73 lines (58 loc) 2.16 kB
import * as R from "ramda"; import { imageSrcFromMediaItem } from "../"; import { entry } from "./testEntry"; describe("imageSrcFromMediaItem", () => { it("when the matching key is found and the src is not empty", () => { const result = imageSrcFromMediaItem(entry as ZappEntry, [ "logo_thumbnail", ]); expect(result).toEqual(entry.media_group[1].media_item[0].src); expect(result).not.toEqual(""); }); it("returns a media item with the 'image_base' key as a fallback", () => { const result = imageSrcFromMediaItem(entry as ZappEntry, [ "does_not_exist", ]); const fallback = entry.media_group[0].media_item[0]; expect(result).toEqual(fallback.src); expect(fallback.key).toBe("image_base"); }); it("returns undefined if the key was found but the source was empty", () => { const badEntry: ZappEntry = R.set( R.lensPath(["media_group", 0, "media_item", 0, "src"]), "", entry ); expect(imageSrcFromMediaItem(badEntry, ["image_base"])).toBeUndefined(); }); it("returns undefined when fallback is false and key is not found", () => { const result = imageSrcFromMediaItem(entry as ZappEntry, [ "does_not_exist", false, ]); expect(result).toBeUndefined(); }); it("returns src when fallback is false and key is found", () => { const result = imageSrcFromMediaItem(entry as ZappEntry, [ "logo_thumbnail", false, ]); expect(result).toEqual(entry.media_group[1].media_item[0].src); }); it("returns image_base as fallback when fallback is explicitly true and key is not found", () => { const result = imageSrcFromMediaItem(entry as ZappEntry, [ "does_not_exist", true, ]); const fallback = entry.media_group[0].media_item[0]; expect(result).toEqual(fallback.src); expect(fallback.key).toBe("image_base"); }); it("returns src when fallback is explicitly true and key is found", () => { const result = imageSrcFromMediaItem(entry as ZappEntry, [ "logo_thumbnail", true, ]); expect(result).toEqual(entry.media_group[1].media_item[0].src); }); });