UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

172 lines (144 loc) • 6.75 kB
import { SCREEN_TYPES, getTypeMatcher, itemIsOfType, getIdResolver, } from "../itemTypes"; import { river, article, riverFeed, menuItem, content, vod, audio, channel, playable, urlScheme, } from "./fixtures"; const itemIdResolvers = require("../itemIdResolvers"); const itemTypeMatchers = require("../itemTypeMatchers"); describe("SCREEN_TYPES", () => { it("registers the screen types", () => { expect(SCREEN_TYPES).toHaveProperty("RIVER", "river"); expect(SCREEN_TYPES).toHaveProperty("ARTICLE", "article"); expect(SCREEN_TYPES).toHaveProperty("MENU_ITEM", "menu_item"); expect(SCREEN_TYPES).toHaveProperty("CONTENT_SCREEN", "content_screen"); expect(SCREEN_TYPES).toHaveProperty("PLAYABLE", "playable"); expect(SCREEN_TYPES).toHaveProperty("URL_SCHEME", "url_scheme"); }); }); describe("getTypeMatcher", () => { it("returns the matcher for the type", () => { expect(getTypeMatcher(SCREEN_TYPES.RIVER)).toEqual( itemTypeMatchers.isRiver ); expect(getTypeMatcher(SCREEN_TYPES.ARTICLE)).toEqual( itemTypeMatchers.isArticle ); expect(getTypeMatcher(SCREEN_TYPES.MENU_ITEM)).toEqual( itemTypeMatchers.isMenuItem ); expect(getTypeMatcher(SCREEN_TYPES.CONTENT_SCREEN)).toEqual( itemTypeMatchers.isContentScreen ); expect(getTypeMatcher(SCREEN_TYPES.PLAYABLE)).toEqual( itemTypeMatchers.isPlayable ); expect(getTypeMatcher(SCREEN_TYPES.URL_SCHEME)).toEqual( itemTypeMatchers.isUrlScheme ); }); }); describe("isItemOfType", () => { it("is a curried function", () => { expect(itemIsOfType(river, SCREEN_TYPES.RIVER)).toBeBoolean(); expect(itemIsOfType(river)).toBeFunction(); }); it("returns true if the item is of the given type", () => { expect(itemIsOfType(river, SCREEN_TYPES.RIVER)).toBe(true); expect(itemIsOfType(riverFeed, SCREEN_TYPES.RIVER)).toBe(true); expect(itemIsOfType(article, SCREEN_TYPES.ARTICLE)).toBe(true); expect(itemIsOfType(menuItem, SCREEN_TYPES.MENU_ITEM)).toBe(true); expect(itemIsOfType(content, SCREEN_TYPES.CONTENT_SCREEN)).toBe(true); expect(itemIsOfType(playable, SCREEN_TYPES.PLAYABLE)).toBe(true); expect(itemIsOfType(vod, SCREEN_TYPES.PLAYABLE)).toBe(true); expect(itemIsOfType(audio, SCREEN_TYPES.PLAYABLE)).toBe(true); expect(itemIsOfType(channel, SCREEN_TYPES.PLAYABLE)).toBe(true); expect(itemIsOfType(urlScheme, SCREEN_TYPES.URL_SCHEME)).toBe(true); }); it("returns false otherwise", () => { // content screen expectations are commented out cause they will yield true // for all types, as a fallback scenario expect(itemIsOfType(river, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(river, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(river, SCREEN_TYPES.PLAYABLE)).toBe(false); expect(itemIsOfType(river, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(river, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(riverFeed, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(riverFeed, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(riverFeed, SCREEN_TYPES.PLAYABLE)).toBe(false); expect(itemIsOfType(riverFeed, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(riverFeed, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(article, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(article, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(article, SCREEN_TYPES.PLAYABLE)).toBe(false); expect(itemIsOfType(article, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(article, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(menuItem, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(menuItem, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(menuItem, SCREEN_TYPES.PLAYABLE)).toBe(false); expect(itemIsOfType(menuItem, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(menuItem, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(playable, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(playable, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(playable, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(playable, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(playable, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(vod, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(vod, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(vod, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(vod, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(vod, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(audio, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(audio, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(audio, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(audio, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(audio, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(channel, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(channel, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(channel, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(channel, SCREEN_TYPES.URL_SCHEME)).toBe(false); // expect(itemIsOfType(playable, SCREEN_TYPES.CONTENT_SCREEN)).toBe(false); expect(itemIsOfType(content, SCREEN_TYPES.ARTICLE)).toBe(false); expect(itemIsOfType(content, SCREEN_TYPES.MENU_ITEM)).toBe(false); expect(itemIsOfType(content, SCREEN_TYPES.RIVER)).toBe(false); expect(itemIsOfType(content, SCREEN_TYPES.PLAYABLE)).toBe(false); expect(itemIsOfType(content, SCREEN_TYPES.URL_SCHEME)).toBe(false); }); }); describe("getIdResolver", () => { it("returns the id resolver function based on the type", () => { expect(getIdResolver(SCREEN_TYPES.RIVER)).toEqual( itemIdResolvers.getRiverId ); expect(getIdResolver(SCREEN_TYPES.ARTICLE)).toEqual( itemIdResolvers.getArticleId ); expect(getIdResolver(SCREEN_TYPES.MENU_ITEM)).toEqual( itemIdResolvers.getMenuItemId ); expect(getIdResolver(SCREEN_TYPES.CONTENT_SCREEN)).toEqual( itemIdResolvers.getContentScreenId ); expect(getIdResolver(SCREEN_TYPES.PLAYABLE)).toEqual( itemIdResolvers.getPlayableId ); expect(getIdResolver(SCREEN_TYPES.URL_SCHEME)).toEqual( itemIdResolvers.getUrlSchemeId ); }); it("returns getIdProp if the id resolver can't be found", () => { expect(getIdResolver("foo")).toEqual(itemIdResolvers.getIdProp); }); });