59 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2026-06-17 19:10:46 +08:00
/**
* @format
*/
import React from 'react';
import ReactTestRenderer from 'react-test-renderer';
jest.mock('react-native-device-info', () => ({
getVersion: () => '1.0.0',
}));
jest.mock('@react-native-async-storage/async-storage', () => ({
getItem: jest.fn(() => Promise.resolve('zh')),
setItem: jest.fn(() => Promise.resolve()),
}));
jest.mock('@systemic-games/react-native-bluetooth-le', () => ({
Central: {
addListener: jest.fn(),
removeListener: jest.fn(),
stopScan: jest.fn(),
shutdown: jest.fn(),
initialize: jest.fn(),
startScan: jest.fn(),
connectPeripheral: jest.fn(),
disconnectPeripheral: jest.fn(),
readCharacteristic: jest.fn(),
writeCharacteristic: jest.fn(),
subscribeCharacteristic: jest.fn(),
unsubscribeCharacteristic: jest.fn(),
},
}));
jest.mock('@systemic-games/react-native-nordic-nrf5-dfu', () => ({
startDfu: jest.fn(),
getDfuTargetId: jest.fn(() => 'mock-device-id'),
addDfuEventListener: jest.fn(() => ({ remove: jest.fn() })),
}));
jest.mock('react-native-fs', () => ({
CachesDirectoryPath: '/tmp',
writeFile: jest.fn(),
exists: jest.fn(),
unlink: jest.fn(),
downloadFile: jest.fn(() => ({ promise: Promise.resolve({ statusCode: 200 }) })),
stat: jest.fn(),
}));
jest.mock('react-native-vector-icons/MaterialCommunityIcons', () => 'Icon');
jest.mock('../src/SplashScreen', () => 'SplashScreen');
import App from '../App';
test('renders correctly', async () => {
await ReactTestRenderer.act(() => {
ReactTestRenderer.create(<App />);
});
});