import { render } from '@testing-library/react-native';
import * as React from 'react';
import * as UseReanimatedAnimationBuilder from '../hooks/useReanimatedAnimationBuilder';
import { AnimatedContainer } from './AnimatedContainer';
import { AutofocusContainer } from './AutofocusContainer';
beforeEach(() => {
jest.clearAllMocks();
jest.spyOn(console, 'warn').mockImplementation();
});
const from = { left: 0 };
const to = { opacity: 1 };
describe('AnimatedContainer', () => {
it('passes the given animation data to the hook', () => {
const useReanimatedAnimationBuilder = jest
.spyOn(UseReanimatedAnimationBuilder, 'useReanimatedAnimationBuilder')
.mockReturnValue({ exiting: 'exiting', entering: 'entering' } as any);
const { getByTestId } = render(
,
);
expect(useReanimatedAnimationBuilder).toHaveBeenCalledWith({
from,
to,
duration: 300,
exit: undefined,
});
expect(getByTestId('test-id').props).toEqual({
children: undefined,
entering: 'entering',
exiting: 'exiting',
style: undefined,
testID: 'test-id',
});
});
it('passes the given animation data to the hook 2', () => {
const useReanimatedAnimationBuilder = jest
.spyOn(UseReanimatedAnimationBuilder, 'useReanimatedAnimationBuilder')
.mockReturnValue({ exiting: 'exiting', entering: 'entering' } as any);
const { getByTestId } = render(
,
);
expect(useReanimatedAnimationBuilder).toHaveBeenCalledWith({
from,
to,
duration: 600,
exit: undefined,
});
expect(getByTestId('test-id').props).toEqual({
children: undefined,
entering: 'entering',
exiting: 'exiting',
style: undefined,
testID: 'test-id',
});
});
it('wraps the content with the AutofocusContainer when the autofocus property is true', () => {
const { UNSAFE_getAllByType } = render(
,
);
expect(UNSAFE_getAllByType(AutofocusContainer)).toBeDefined();
});
});
jest.mock('../hooks/useReanimatedAnimationBuilder');
jest.mock('../hooks/useFocus', () => {
return {
useFocus: () => {
return {
setFocus: jest.fn(),
};
},
};
});
jest.mock('react-native-reanimated', () => {
const { View } = require('react-native');
return {
View: (props: any) => ,
};
});