import * as React from 'react';
import {
render,
fireEvent,
screen,
waitFor,
act,
} from '@testing-library/react';
import {
ListsUsingSameResource,
ListsWithoutStore,
} from './useListController.storeKey.stories';
import { TestMemoryRouter } from '../../routing';
describe('useListController', () => {
describe('storeKey', () => {
it('should keep distinct two lists of the same resource given different keys', async () => {
render(
);
await waitFor(() => {
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('3');
});
act(() => {
fireEvent.click(screen.getByLabelText('incrementPerPage'));
});
await waitFor(() => {
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('4');
});
act(() => {
fireEvent.click(screen.getByLabelText('flop'));
});
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('3');
});
it('should not use the store when storeKey is false', async () => {
render(
);
await waitFor(() => {
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('3');
});
act(() => {
fireEvent.click(screen.getByLabelText('incrementPerPage'));
fireEvent.click(screen.getByLabelText('incrementPerPage'));
});
await waitFor(() => {
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('5');
});
act(() => {
fireEvent.click(screen.getByLabelText('nostore'));
});
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('3');
act(() => {
fireEvent.click(screen.getByLabelText('incrementPerPage'));
});
await waitFor(() => {
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('4');
});
act(() => {
fireEvent.click(screen.getByLabelText('store'));
});
// Shouldn't have changed the store list
await waitFor(() => {
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('5');
});
act(() => {
fireEvent.click(screen.getByLabelText('nostore'));
});
// Should have reset its parameters to their default
expect(
screen.getByLabelText('perPage').getAttribute('data-value')
).toEqual('3');
});
});
});