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)
);
});
});