import React from "react"; import { render } from "@testing-library/react-native"; import { GeneralContentScreen } from "../GeneralContentScreen"; const mockUseAppSelector = jest.fn(); const mockSelectRiverById = jest.fn(); const mockProviderSpy = jest.fn(); jest.mock("../../River/ComponentsMap", () => ({ ComponentsMap: () => { const React = require("react"); const { View } = require("react-native"); return ; }, })); jest.mock("@applicaster/zapp-react-native-utils/reactHooks/actions", () => ({ useActions: jest.fn(() => jest.fn()), })); jest.mock("../utils", () => ({ logger: { warn: jest.fn() }, whenMatchingType: jest.fn((_type, value) => value), })); jest.mock("@applicaster/zapp-react-native-utils/reactHooks/layout", () => ({ useLayoutVersion: jest.fn(() => false), })); jest.mock( "@applicaster/zapp-react-native-utils/reactHooks/screen/useScreenData", () => ({ useScreenData: jest.fn(() => ({ ui_components: [{ id: "ui-component" }], general: {}, })), }) ); jest.mock("../utils/useCurationAPI", () => ({ useCurationAPI: jest.fn(() => [{ id: "curation-component" }]), })); jest.mock("@applicaster/quick-brick-core/App/ActionSetters", () => ({ useRiverInitialState: jest.fn(() => []), })); jest.mock("../utils/useEventAlerts", () => ({ useEventAlerts: jest.fn(), })); jest.mock("@applicaster/zapp-react-native-redux", () => ({ useAppSelector: (...args) => mockUseAppSelector(...args), selectRiverById: (...args) => mockSelectRiverById(...args), })); jest.mock("../utils/getScreenDataSource", () => ({ getScreenDataSource: jest.fn(() => ({ source: "https://feed", mapping: {}, })), })); jest.mock( "../../ScreenResolverFeedProvider/ScreenResolverFeedProvider", () => ({ ScreenResolverFeedProvider: ({ id, useFeedData, children }) => { const React = require("react"); const { View } = require("react-native"); mockProviderSpy(id, useFeedData); useFeedData(id); return {children}; }, }) ); describe("GeneralContentScreen", () => { beforeEach(() => { jest.clearAllMocks(); mockUseAppSelector.mockImplementation((selector) => selector({})); mockSelectRiverById.mockReturnValue({ id: "screen-1" }); }); it("wraps content with ScreenResolverFeedProvider and renders ComponentsMap", () => { const { getByTestId } = render( ); expect(getByTestId("screen-resolver-feed-provider")).toBeDefined(); expect(getByTestId("components-map")).toBeDefined(); expect(mockProviderSpy).toHaveBeenCalledWith( "screen-1", expect.any(Function) ); }); });