Files
AppDev/FastNotes/jest.setup.ts
2026-03-18 16:38:55 +01:00

129 lines
3.9 KiB
TypeScript

import "react-native-gesture-handler/jestSetup"
import { cleanup } from "@testing-library/react-native"
import mockSafeAreaContext from "react-native-safe-area-context/jest/mock"
afterEach(() => {
cleanup()
})
jest.mock("@react-native-async-storage/async-storage", () =>
require("@react-native-async-storage/async-storage/jest/async-storage-mock")
)
jest.mock("expo-constants", () => {
const mockConstants = {
expoConfig: {
extra: {
supabaseUrl: "https://example.supabase.co",
supabaseKey: "test-anon-key",
},
},
executionEnvironment: "standalone",
}
return {
__esModule: true,
default: mockConstants,
...mockConstants,
}
})
jest.mock("react-native-safe-area-context", () => mockSafeAreaContext)
jest.mock("react-native-reanimated", () => {
const Reanimated = require("react-native-reanimated/mock")
Reanimated.default.call = () => {}
return Reanimated
})
jest.mock("react-native-screens", () => {
const React = require("react")
const { View } = require("react-native")
const MockScreen = ({ children }: { children?: unknown }) => React.createElement(View, null, children)
return {
__esModule: true,
default: MockScreen,
compatibilityFlags: {
usesNewAndroidHeaderHeightImplementation: false,
},
Screen: MockScreen,
ScreenContainer: MockScreen,
ScreenStack: MockScreen,
ScreenStackItem: MockScreen,
ScreenStackHeaderConfig: MockScreen,
ScreenStackHeaderBackButtonImage: MockScreen,
ScreenStackHeaderCenterView: MockScreen,
ScreenStackHeaderLeftView: MockScreen,
ScreenStackHeaderRightView: MockScreen,
ScreenStackHeaderSearchBarView: MockScreen,
SearchBar: MockScreen,
NativeScreen: MockScreen,
NativeScreenContainer: MockScreen,
FullWindowOverlay: MockScreen,
Freeze: MockScreen,
enableScreens: jest.fn(),
isSearchBarAvailableForCurrentPlatform: jest.fn(() => false),
screensEnabled: jest.fn(),
}
})
jest.mock("expo-blur", () => {
const React = require("react")
const { View } = require("react-native")
return {
BlurView: ({ children, style }: { children?: unknown; style?: object }) =>
React.createElement(View, { style }, children),
}
})
jest.mock("expo-image", () => {
const React = require("react")
const { View } = require("react-native")
return {
Image: ({ style, testID }: { style?: object; testID?: string }) =>
React.createElement(View, { style, testID: testID ?? "mock-expo-image" }),
}
})
jest.mock("expo-image-picker", () => ({
CameraType: {
back: "back",
},
getMediaLibraryPermissionsAsync: jest.fn(async () => ({ granted: true })),
requestMediaLibraryPermissionsAsync: jest.fn(async () => ({ granted: true })),
launchImageLibraryAsync: jest.fn(async () => ({ canceled: true, assets: [] })),
getCameraPermissionsAsync: jest.fn(async () => ({ granted: true })),
requestCameraPermissionsAsync: jest.fn(async () => ({ granted: true })),
launchCameraAsync: jest.fn(async () => ({ canceled: true, assets: [] })),
}))
jest.mock("expo-image-manipulator", () => ({
SaveFormat: {
PNG: "png",
WEBP: "webp",
JPEG: "jpeg",
},
manipulateAsync: jest.fn(async (uri: string) => ({ uri })),
}))
jest.mock("@react-navigation/elements", () => {
const actual = jest.requireActual("@react-navigation/elements")
return {
...actual,
useHeaderHeight: () => 0,
}
})
jest.mock("@/src/notifications/PushNotificationsProvider", () => ({
__esModule: true,
default: ({ children }: { children?: unknown }) => children,
}))
jest.mock("react-native/Libraries/Animated/NativeAnimatedHelper", () => ({}), { virtual: true })