@applicaster/zapp-react-native-ui-components
Version:
Applicaster Zapp React Native ui components for the Quick Brick App
118 lines (98 loc) • 2.7 kB
JavaScript
import * as React from "react";
import { View } from "react-native";
import { shallow } from "enzyme";
jest.mock("../../default-cell-renderer", () =>
jest.fn((prop) => <View whoAmI="default renderer" someProp={prop} />)
);
const { CellRendererResolver } = require("../index");
const component = {
styles: {
cell_plugin_configuration_id: "ABCDE-123456",
},
};
const plugins = [
{
identifier: "custom_renderer_plugin",
module: jest.fn((prop) => <View someProp={prop} />),
},
];
const styles = {};
const cellStyles = {
"ABCDE-123456": {
plugin_identifier: "custom_renderer_plugin",
configuration: {},
},
"FGHIJ-123456": {
plugin_identifier: "unknown_plugin",
configuration: {},
},
};
describe("CellRendererResolver", () => {
const getResult = ({ component, plugins, styles, cellStyles }) =>
CellRendererResolver({
component,
plugins,
styles,
cellStyles,
});
it("renders correctly", () => {
const result = shallow(
getResult({ component, plugins, styles, cellStyles })
);
expect(result).toMatchSnapshot();
});
describe("with a default renderer plugin", () => {
it("renders correctly", () => {
const result = shallow(
getResult({
component,
plugins,
styles,
cellStyles,
})
);
expect(result).toMatchSnapshot();
});
it("returns default plugin if component has no cell_plugin_configuration_id", () => {
const result = getResult({
component: {},
plugins,
styles,
cellStyles,
});
expect(result).toBeDefined();
expect(result.props.whoAmI).toEqual("default renderer");
});
it("returns default plugin if requested cell plugin configuration does not exist", () => {
const result = getResult({
component: { styles: { cell_plugin_configuration_id: "wrong-id" } },
plugins,
styles,
cellStyles,
});
expect(result.props.whoAmI).toEqual("default renderer");
});
it("returns default plugin if cellStyles store is empty", () => {
const result = getResult({
component,
plugins,
styles,
cellStyles: {},
});
expect(result.props.whoAmI).toEqual("default renderer");
});
it("returns null if requested renderer plugin does not exist", () => {
const result = getResult({
component: {
styles: {
cell_plugin_configuration_id: "FGHIJ-123456",
},
},
plugins,
styles,
cellStyles,
});
expect(result.props.whoAmI).toEqual("default renderer");
});
});
});