import React from 'react';
import { fireEvent, render } from '@testing-library/react-native';
import StepByStepForm from '.';
const mockedNavigate = jest.fn();
jest.mock('@react-navigation/native', () => {
return {
useNavigation: () => ({
navigate: mockedNavigate,
reset: mockedNavigate,
}),
};
});
describe('StepByStepForm component', () => {
const pages = ['hai', 'hello', 'hei'];
const props = {
pages: pages.map((name) => ({
name,
route: name,
})),
currentPage: 0,
};
it('only has "Isi" button when form is never filled', () => {
const { getByText, queryByText } = render();
const nextButton = getByText(/Isi/i);
expect(nextButton).toBeTruthy();
expect(queryByText(/Ubah/i)).toBeFalsy();
});
it('has "Ubah" button when form has been filled', () => {
const { queryByText } = render(
,
);
expect(queryByText(/Ubah/i)).toBeTruthy();
});
it('redirects to designated route when button "Ubah" or "Isi" is pressed', () => {
const { getByText } = render();
const nextButton = getByText(/Isi/i);
expect(nextButton).toBeTruthy();
fireEvent.press(nextButton);
expect(mockedNavigate).toHaveBeenCalled();
});
it('redirects to finish route when button "Selesai" is pressed', () => {
const { getByText } = render(
,
);
const finishButton = getByText(/Selesai/i);
expect(finishButton).toBeTruthy();
fireEvent.press(finishButton);
expect(mockedNavigate).toHaveBeenCalled();
});
});