-
Mateusz Bolewski authoredMateusz Bolewski authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ResultsList.component.test.tsx 2.28 KiB
/* eslint-disable no-magic-numbers */
import { act, render, screen } from '@testing-library/react';
import {
InitialStoreState,
getReduxWrapperWithStore,
} from '@/utils/testing/getReduxWrapperWithStore';
import { StoreType } from '@/redux/store';
import { drugsFixture } from '@/models/fixtures/drugFixtures';
import { ResultsList } from './ResultsList.component';
const INITIAL_STATE: InitialStoreState = {
search: {
searchValue: 'aspirin',
loading: 'idle',
},
drawer: {
isOpen: true,
drawerName: 'search',
searchDrawerState: {
currentStep: 2,
stepType: 'drugs',
selectedValue: undefined,
},
},
drugs: {
data: drugsFixture,
loading: 'succeeded',
error: { name: '', message: '' },
},
};
const renderComponent = (initialStoreState: InitialStoreState = {}): { store: StoreType } => {
const { Wrapper, store } = getReduxWrapperWithStore(initialStoreState);
return (
render(
<Wrapper>
<ResultsList />
</Wrapper>,
),
{
store,
}
);
};
describe('ResultsList - component ', () => {
it('should render results and navigation panel', () => {
renderComponent(INITIAL_STATE);
expect(screen.getByText('drugs:')).toBeInTheDocument();
expect(screen.getByText('aspirin')).toBeInTheDocument();
// These tests will be uncommented when list of drugs will be ready
// const fristDrugName = drugsFixture[0].name;
// const secondDrugName = drugsFixture[1].name;
// expect(screen.getByText(fristDrugName)).toBeInTheDocument();
// expect(screen.getByText(secondDrugName)).toBeInTheDocument();
});
it('should navigate to grouped search results after backward button click', async () => {
const { store } = renderComponent(INITIAL_STATE);
const {
drawer: {
searchDrawerState: { currentStep, stepType },
},
} = store.getState();
expect(currentStep).toBe(2);
expect(stepType).toBe('drugs');
const backwardButton = screen.getByRole('close-drawer-button');
await act(() => {
backwardButton.click();
});
const {
drawer: {
searchDrawerState: { currentStep: updatedStep, stepType: updatedStepType },
},
} = store.getState();
expect(updatedStep).toBe(1);
expect(updatedStepType).toBe('none');
});
});