Rocket.Chat.ReactNative/jest.setup.js

149 lines
4.2 KiB
JavaScript
Raw Normal View History

// https://github.com/facebook/react/issues/20756#issuecomment-780927519
import 'react-16-node-hanging-test-fix';
2024-01-25 14:11:07 +00:00
import React from 'react';
import '@testing-library/react-native/extend-expect';
import mockClipboard from '@react-native-clipboard/clipboard/jest/clipboard-mock.js';
import mockAsyncStorage from '@react-native-async-storage/async-storage/jest/async-storage-mock';
jest.mock('@react-native-async-storage/async-storage', () => mockAsyncStorage);
2023-10-19 13:38:57 +00:00
jest.mock('react-native-safe-area-context', () => {
const inset = { top: 0, right: 0, bottom: 0, left: 0 };
return {
...jest.requireActual('react-native-safe-area-context'),
SafeAreaProvider: jest.fn(({ children }) => children),
SafeAreaConsumer: jest.fn(({ children }) => children(inset)),
useSafeAreaInsets: jest.fn(() => inset),
useSafeAreaFrame: jest.fn(() => ({ x: 0, y: 0, width: 390, height: 844 }))
};
});
jest.mock('./node_modules/react-native/Libraries/Interaction/InteractionManager', () => ({
runAfterInteractions: callback => callback()
}));
2023-10-19 13:38:57 +00:00
// @ts-ignore
global.__reanimatedWorkletInit = () => {};
jest.mock('react-native-reanimated', () => require('react-native-reanimated/mock'));
jest.mock('@react-native-clipboard/clipboard', () => mockClipboard);
jest.mock('rn-fetch-blob', () => ({
fs: {
dirs: {
DocumentDir: '/data/com.rocket.chat/documents',
DownloadDir: '/data/com.rocket.chat/downloads'
},
exists: jest.fn(() => null)
},
fetch: jest.fn(() => null),
config: jest.fn(() => null)
}));
jest.mock('react-native-file-viewer', () => ({
open: jest.fn(() => null)
}));
jest.mock('expo-haptics', () => jest.fn(() => null));
jest.mock('expo-av', () => ({
...jest.requireActual('expo-av'),
Audio: {
...jest.requireActual('expo-av').Audio,
getPermissionsAsync: jest.fn(() => ({ status: 'granted', granted: true, canAskAgain: true })),
Recording: jest.fn(() => ({
prepareToRecordAsync: jest.fn(),
startAsync: jest.fn(),
stopAndUnloadAsync: jest.fn(),
setOnRecordingStatusUpdate: jest.fn()
}))
}
}));
jest.mock('./app/lib/methods/search', () => ({
search: () => []
}));
jest.mock('./app/lib/database', () => jest.fn(() => null));
2024-01-25 14:11:07 +00:00
jest.mock('./app/containers/MessageComposer/components/EmojiKeyboard', () => jest.fn(() => null));
jest.mock('./app/lib/hooks/useFrequentlyUsedEmoji', () => ({
useFrequentlyUsedEmoji: () => ({
frequentlyUsed: [],
loaded: true
})
}));
jest.mock('./app/lib/database/services/Message', () => ({
getMessageById: messageId => ({
id: messageId,
rid: 'rid',
msg: `Message ${messageId}`
})
}));
jest.mock('@react-navigation/native', () => {
const actualNav = jest.requireActual('@react-navigation/native');
const { useEffect } = require('react');
return {
...actualNav,
useFocusEffect: useEffect,
isFocused: () => true,
useIsFocused: () => true,
useRoute: () => jest.fn(),
useNavigation: () => ({
navigate: jest.fn(),
addListener: () => jest.fn()
}),
createNavigationContainerRef: jest.fn(),
feat: new audio player (#5160) * feat: media auto-download view * media auto download view completed and saving the settings in mmkv * audio download preference * audio auto download when the user who sent the audio is the same logged on mobile * creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done * minor tweak audio show play button after download * refactor audioFile to handleMediaDownload and fixed the audio download * desestructured params to download too * image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local * add the possibility to cancel image download and clear local images * refactor blur component * video download and auto download, also keeped the behavior to download unsuportted videos to the gallery * add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading * remove the custom hook for autoDownload * remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name * send messageId to video * introducing the reducer to keep the downloads in progress * create a media download selector * remove all the redux stuff and do the same as file upload * video download behavior * done for image and audio * fix the try catch download media * clean up * image container uiKit * fix lint * change rn-fetch-blob to expo-filesystem * add pt-br * pass the correct message id when there is an attachment on reply * refactor some changes requested * fix audio and move the netInfo from autoDownloadPreference to redux * variable isAutoDownloadEnable name and handleMediaDownload getExtension * message/Image refactored, change the component to show the image from FastImage to Image * refactor handleMediaDownload and deleteMedia * minor tweak * refactor audio * refactor video * fix the type on the messagesView(the view of files) * minor tweak * fix the name of searchMediaFIleAsync's result * minor tweak, add the default behavior, add the OFF as label * minor tweaks * verify if the media auto download exists on settings view * fix media auto download view layout and minor tweak wifi * avoid auto download from reply * minor tweak at comment * tweak list.section * change the name to netInfoState and Local_document_directory * remove mediaType and refactor audio and image * separate blurview * thumbnail video and video behavior * add Audio to i18n and minor tweak * set the blur as always dark and add the possibility to overlay * don't need to controle the filepath in the view * fix the loading in image and video at begin * save the file with a similar filename as expected * removed the necessity of messageId or id * minor tweak * switch useLayoutEffect to useEffect * avoid onpress do some edge case because of cached at video * minor tweak * tweak at audio comment extension * minor tweak type userpreferences * remove test id from mediaAutoDownloadView * change action's name to SET_NET_INFO_STATE * caching and deleting video's thumbnails * remove generate thumbnail * minor tweak in image * update camera-roll and save the file from local url * remove local_cache_directory and deleteThumbnail * update blur to fix error on android * first commit * fix togglePlayPause * separate audio to a folder inside components and minor tweak attachment * created the slider with text * play/pause button, currentTime equal the sound, can change the slider and reflect to the sound * play/pause, track is working and onEnd * update the icons with play-shaped-filled, pause-shape-filled, loading * start the tweaks on layout * can play multiple audios, pausing the previous to execute the new one * loading animated * added the audio rate * layout fixed * removed the sound manipulation from Slider to manipulate only in the index * fix time margin horizontal * fix play 2 audios and play/pause properly * change the way we treat the audio * remove audio copy * minor tweak * fix rate state * remove the PAUSE_AUDIO * fix unloadAll, add hit slop to slider, show the duration on the first render * refactor colors to be the same as figmas name * change the class' name and add the method pauseCurrentAudio * pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView * pause audio when entering a thread * fix where call the pauseCurrentAudio * moved the player from messageAudio to audioPlayer * refactor audio component * remove loading * update snapshot * fix colors name * pauseAudio when roomview is blur * moved audio from message/component/audio to message/Audio * add navigation focus to AudioPlayer component and fix the jest * add the { androidImplementation: 'MediaPlayer' } * fix action sheet swipe 02-room * fix action sheet swipe 05-threads * tweak touchable * remove react.memo from playbutton * hitSlop * speed playback from array * textinputprops * tweak at names * minor tweak at onEnd * minor tweak at names * update styles * thumb seek size * change marginBottom * add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler * change the utils to constants * change to audioState * fix the seek for android * TDownloadState * speed array * pause audio from messagesView when open the files * update test * minor tweak * change the time after ony one click, fixes the thumb to move sync with the click * Fix seek * minor tweak Sound to Audio.Sound * name of Icon * enable PlaybackSpeed only when playing the audio * playbackSpeed to mmkv * mock implementation * create native button * minor tweak * minor tweaks * playbackSpeed after loadAudio * avoid show the error when try to setRate without audio * add messageID to differ audios inside a quote/forward from original one * unloadRoomAudios instead of unloadAllAudios inside the roomsListView * minor tweak --------- Co-authored-by: Diego Mello <diegolmello@gmail.com> Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
navigate: jest.fn(),
addListener: jest.fn(() => jest.fn())
};
});
jest.mock('react-native-notifications', () => ({
Notifications: {
getInitialNotification: jest.fn(() => Promise.resolve()),
registerRemoteNotifications: jest.fn(),
events: () => ({
registerRemoteNotificationsRegistered: jest.fn(),
registerRemoteNotificationsRegistrationFailed: jest.fn(),
registerNotificationReceivedForeground: jest.fn(),
registerNotificationReceivedBackground: jest.fn(),
registerNotificationOpened: jest.fn()
})
}
}));
jest.mock('@gorhom/bottom-sheet', () => {
const react = require('react-native');
return {
__esModule: true,
default: react.View,
BottomSheetScrollView: react.ScrollView
};
});
// If you need to manually mock a lib use this mock pattern and set exports.
jest.mock('react-native-math-view', () => {
const react = require('react-native');
return {
__esModule: true,
default: react.View, // Default export
MathText: react.View // {...} Named export
};
});
feat: new audio player (#5160) * feat: media auto-download view * media auto download view completed and saving the settings in mmkv * audio download preference * audio auto download when the user who sent the audio is the same logged on mobile * creation of isAutoDownloadEnabled, evaluate hist hook, Image Full Size preload done * minor tweak audio show play button after download * refactor audioFile to handleMediaDownload and fixed the audio download * desestructured params to download too * image download and autoDownload, algo fix the formatAttachmentUrl to show the image from local * add the possibility to cancel image download and clear local images * refactor blur component * video download and auto download, also keeped the behavior to download unsuportted videos to the gallery * add the possibility to start downloading a video, then exit the room, back again to room and cancel the video previously downloading * remove the custom hook for autoDownload * remove blurcomponent, fix the blur style in image.tsx, minor tweak video function name * send messageId to video * introducing the reducer to keep the downloads in progress * create a media download selector * remove all the redux stuff and do the same as file upload * video download behavior * done for image and audio * fix the try catch download media * clean up * image container uiKit * fix lint * change rn-fetch-blob to expo-filesystem * add pt-br * pass the correct message id when there is an attachment on reply * refactor some changes requested * fix audio and move the netInfo from autoDownloadPreference to redux * variable isAutoDownloadEnable name and handleMediaDownload getExtension * message/Image refactored, change the component to show the image from FastImage to Image * refactor handleMediaDownload and deleteMedia * minor tweak * refactor audio * refactor video * fix the type on the messagesView(the view of files) * minor tweak * fix the name of searchMediaFIleAsync's result * minor tweak, add the default behavior, add the OFF as label * minor tweaks * verify if the media auto download exists on settings view * fix media auto download view layout and minor tweak wifi * avoid auto download from reply * minor tweak at comment * tweak list.section * change the name to netInfoState and Local_document_directory * remove mediaType and refactor audio and image * separate blurview * thumbnail video and video behavior * add Audio to i18n and minor tweak * set the blur as always dark and add the possibility to overlay * don't need to controle the filepath in the view * fix the loading in image and video at begin * save the file with a similar filename as expected * removed the necessity of messageId or id * minor tweak * switch useLayoutEffect to useEffect * avoid onpress do some edge case because of cached at video * minor tweak * tweak at audio comment extension * minor tweak type userpreferences * remove test id from mediaAutoDownloadView * change action's name to SET_NET_INFO_STATE * caching and deleting video's thumbnails * remove generate thumbnail * minor tweak in image * update camera-roll and save the file from local url * remove local_cache_directory and deleteThumbnail * update blur to fix error on android * first commit * fix togglePlayPause * separate audio to a folder inside components and minor tweak attachment * created the slider with text * play/pause button, currentTime equal the sound, can change the slider and reflect to the sound * play/pause, track is working and onEnd * update the icons with play-shaped-filled, pause-shape-filled, loading * start the tweaks on layout * can play multiple audios, pausing the previous to execute the new one * loading animated * added the audio rate * layout fixed * removed the sound manipulation from Slider to manipulate only in the index * fix time margin horizontal * fix play 2 audios and play/pause properly * change the way we treat the audio * remove audio copy * minor tweak * fix rate state * remove the PAUSE_AUDIO * fix unloadAll, add hit slop to slider, show the duration on the first render * refactor colors to be the same as figmas name * change the class' name and add the method pauseCurrentAudio * pause audio when unmount a RoomView and unloadAll when focusing at RoomsListView * pause audio when entering a thread * fix where call the pauseCurrentAudio * moved the player from messageAudio to audioPlayer * refactor audio component * remove loading * update snapshot * fix colors name * pauseAudio when roomview is blur * moved audio from message/component/audio to message/Audio * add navigation focus to AudioPlayer component and fix the jest * add the { androidImplementation: 'MediaPlayer' } * fix action sheet swipe 02-room * fix action sheet swipe 05-threads * tweak touchable * remove react.memo from playbutton * hitSlop * speed playback from array * textinputprops * tweak at names * minor tweak at onEnd * minor tweak at names * update styles * thumb seek size * change marginBottom * add the clamp, adjust the thumb position, remove the necessity of OnEndGestureHandler * change the utils to constants * change to audioState * fix the seek for android * TDownloadState * speed array * pause audio from messagesView when open the files * update test * minor tweak * change the time after ony one click, fixes the thumb to move sync with the click * Fix seek * minor tweak Sound to Audio.Sound * name of Icon * enable PlaybackSpeed only when playing the audio * playbackSpeed to mmkv * mock implementation * create native button * minor tweak * minor tweaks * playbackSpeed after loadAudio * avoid show the error when try to setRate without audio * add messageID to differ audios inside a quote/forward from original one * unloadRoomAudios instead of unloadAllAudios inside the roomsListView * minor tweak --------- Co-authored-by: Diego Mello <diegolmello@gmail.com> Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
2023-11-20 14:13:15 +00:00
2024-01-25 14:11:07 +00:00
jest.mock('react-native-ui-lib/keyboard', () => {
const react = jest.requireActual('react');
return {
__esModule: true,
KeyboardAccessoryView: react.forwardRef((props, ref) => {
const MockName = 'keyboard-accessory-view-mock';
return <MockName>{props.renderContent()}</MockName>;
})
};
});