@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
73 lines (58 loc) • 2.16 kB
text/typescript
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);
});
});