/* eslint-disable react/prop-types */
/* eslint-disable react/destructuring-assignment */
/* eslint-disable react/prefer-stateless-function */
/* eslint-disable max-classes-per-file */
jest.mock('react-native-vector-icons', () => ({
createIconSet: jest.fn(() => 'HeroIcon'),
createIconSetFromIcoMoon: jest.fn(() => 'HeroIcon'),
}));
jest.mock('react-native', () => {
const RN = jest.requireActual('react-native');
const mockedAnimatedFunctions = {
setImmediate: () => jest.fn(),
start: jest.fn((callback?: (result: { finished: boolean }) => void) => {
callback?.({ finished: true });
}),
stop: () => jest.fn(),
_isUsingNativeDriver: () => jest.fn(),
_startNativeLoop: () => jest.fn(),
};
RN.Animated.timing = () => mockedAnimatedFunctions;
RN.Animated.spring = () => mockedAnimatedFunctions;
RN.Animated.stagger = () => mockedAnimatedFunctions;
return RN;
});
jest.mock('../src/utils/scale', () => ({
scale: jest.fn((size) => size),
}));
jest.mock('react-native-pager-view', () => {
const RealComponent = jest.requireActual('react-native-pager-view').default;
const React = jest.requireActual('react');
return class ViewPager extends React.Component<{
children: React.ReactNode;
}> {
index = 0;
setPage = (page: number) => {
const { children } = this.props;
this.index = Math.max(0, Math.min(page, React.Children.count(children)));
};
setPageWithoutAnimation = (page: number) => {
const { children } = this.props;
this.index = Math.max(0, Math.min(page, React.Children.count(children)));
};
render() {
const { children } = this.props;
return {children};
}
};
});
jest.mock('@react-native-community/datetimepicker', () => {
const React = jest.requireActual('react');
return class Picker extends React.Component {
render() {
return React.createElement('Picker', this.props, this.props.children);
}
};
});
jest.mock('@ptomasroos/react-native-multi-slider', () => {
const React = jest.requireActual('react');
return class Slider extends React.Component {
render() {
return React.createElement(
'MultiSlider',
{
...(this.props ?? {}),
testID: 'native-multi-slider',
},
this.props.children
);
}
};
});
jest.mock('@react-native-community/slider', () => {
const React = jest.requireActual('react');
return class Slider extends React.Component {
render() {
return React.createElement('Slider', this.props, this.props.children);
}
};
});
jest.mock('react-native-webview', () => {
const React = jest.requireActual('react');
class WebView extends React.Component {
render() {
return React.createElement('WebView', this.props, this.props.children);
}
}
return {
WebView,
default: WebView,
};
});
jest.mock('@react-native-masked-view/masked-view', () => {
const React = jest.requireActual('react');
const { View } = jest.requireActual('react-native');
const MaskedView = ({
maskElement,
children,
style,
testID,
}: {
maskElement: React.ReactNode;
children: React.ReactNode;
style?: object;
testID?: string;
}) => React.createElement(View, { style, testID }, maskElement, children);
return { __esModule: true, default: MaskedView };
});
jest.mock('expo-linear-gradient', () => {
const React = jest.requireActual('react');
const { View } = jest.requireActual('react-native');
return {
LinearGradient: ({
children,
style,
}: {
children?: React.ReactNode;
style?: object;
}) => React.createElement(View, { style }, children),
};
});
jest.mock('hero-editor/dist/app.js', () => ({ default: '' }));
jest.mock('react-native-gesture-handler', () => {
const ReactNative = jest.requireActual('react-native');
return {
Swipeable: ReactNative.View,
GestureHandlerRootView: ReactNative.View,
FlatList: ReactNative.FlatList,
RectButton: ReactNative.Button,
TouchableOpacity: ReactNative.TouchableOpacity,
};
});
jest.mock('@hero-design/react-native-month-year-picker', () => {
const React = jest.requireActual('react');
const { View, Text } = jest.requireActual('react-native');
return {
MonthYearPickerDialogueAndroid: ({ onChange }) => (
{
if (onChange) {
onChange('dateSetAction', new Date('2019-09-01'));
}
}}
>
Android month year picker
),
MonthYearPickerViewIOS: ({ onChange }) => (
{
if (onChange) {
onChange(new Date('2019-09-01'));
}
}}
>
IOS month year picker
),
};
});
export {};