import * as React from "react";
import { View } from "react-native";
import { render } from "@testing-library/react-native";
const Mocked_RouteManager = jest.fn((props) => (
));
const mock_navBarVisibleFlag = true;
const mockIsNavBarVisible = jest.fn(() => mock_navBarVisibleFlag);
const mockIsOrientationCompatible = jest.fn(() => true);
jest.mock("react-native-safe-area-context", () => ({
useSafeAreaInsets: () => ({ top: 44 }),
useSafeAreaFrame: () => ({ x: 0, y: 0, width: 375, height: 812 }),
}));
jest.mock("../../RouteManager", () => ({
RouteManager: Mocked_RouteManager,
}));
jest.mock(
"@applicaster/zapp-react-native-utils/appUtils/orientationHelper",
() => ({
isOrientationCompatible: mockIsOrientationCompatible,
allowedOrientationsForScreen: jest.fn(),
getOrientation: jest.fn(),
getScreenOrientation: jest.fn(),
useGetScreenOrientation: jest.fn(),
ORIENTATIONS: jest.requireActual(
"@applicaster/zapp-react-native-utils/appUtils/orientationHelper"
).ORIENTATIONS,
})
);
jest.mock("@applicaster/zapp-react-native-utils/analyticsUtils", () => ({
useAnalytics: jest.fn(() => ({
sendScreenEvent: jest.fn(),
})),
}));
jest.mock("@applicaster/zapp-react-native-utils/theme", () => ({
useTheme: jest.fn(() => ({
app_background_color: "blue",
})),
}));
const mockNavBar = jest.fn((props) => {
const View = jest.requireActual("react-native").View;
return ;
});
jest.mock(
"@applicaster/zapp-react-native-app/App/Layout/layoutHelpers",
() => ({
getNavigationPluginModule: () => mockNavBar,
})
);
jest.mock(
"@applicaster/zapp-react-native-utils/reactHooks/screen/useCurrentScreenData",
() => ({
useCurrentScreenData: jest.fn(() => ({
id: "testId",
})),
})
);
jest.mock(
"@applicaster/zapp-react-native-utils/reactHooks/state/useRivers",
() => ({
useRivers: jest.fn(() => ({
rivers: [{ id: "testId", name: "Test River" }],
})),
})
);
jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
isNavBarVisible: mockIsNavBarVisible,
useIsScreenActive: jest.fn().mockReturnValue(true),
useNavigation: jest.fn(() => ({
canGoBack: () => false,
currentRoute: "/river/testId",
activeRiver: { id: "testId" },
screenData: { id: "testId" },
data: { screen: { id: "testId" } },
})),
useRoute: jest.fn(() => ({
pathname: "/river/testId",
screenData: { id: "testId" },
})),
}));
jest.mock("@applicaster/zapp-react-native-utils/reactHooks", () => ({
...jest.requireActual("@applicaster/zapp-react-native-utils/reactHooks"),
useCurrentScreenData: jest.fn(() => ({
id: "testId",
})),
useNavbarState: jest.fn(() => ({
title: "Test Title",
})),
useScreenData: jest.fn(() => ({
id: "testId",
navigations: [{ id: "testId", category: "nav_bar" }],
})),
useDimensions: jest.fn(() => ({
width: 1920,
height: 1080,
})),
useIsTablet: jest.fn(() => false),
}));
jest.mock("@applicaster/zapp-react-native-redux/hooks", () => {
const View = jest.requireActual("react-native").View;
return {
...jest.requireActual("@applicaster/zapp-react-native-redux/hooks"),
usePickFromState: () => ({
plugins: [
{
name: "Offline Plugin",
identifier: "offline-experience",
type: "general",
module: {
OfflineFallbackScreen: ({ children }) => {children}, // eslint-disable-line
},
},
],
}),
};
});
const {
allowedOrientationsForScreen,
getOrientation,
useGetScreenOrientation,
} = require("@applicaster/zapp-react-native-utils/appUtils/orientationHelper");
const navigator = {};
const navBarProps = { nav_items: [] };
const screenData = {};
const screenProps = {
pathname: "/foo/path",
navigator,
navBarProps,
screenData,
};
const { Screen } = require("..");
describe("", () => {
beforeEach(() => {
allowedOrientationsForScreen.mockClear();
getOrientation.mockClear();
useGetScreenOrientation.mockClear();
});
describe("when the navbar should show", () => {
it("renders correctly", () => {
const { toJSON } = render();
expect(toJSON()).toMatchSnapshot();
});
});
describe("when the navbar should be hidden", () => {
it("renders correctly", () => {
const { toJSON } = render();
expect(toJSON()).toMatchSnapshot();
});
});
});