Hello I am trying to make a test for filtering columns, when I filter one column, it will say ´1 kolonner skjult´, if I filter 2 it will say 2 instead. When I make individual tests for these, they work as expected but I am trying to make a test where we first filter one, then make a click to filter one more, and then checking if the text has changed by rendering it, but it looks like the text just get appended and I have no idea why?? Here is the code
// Define the initial visible columns
const alleKolonner: Array<TabellKolonne<Melding>> = meldingtabellKolonner();
const setSkjulteKolonner = vi.fn();
describe('MeldingtabellFiltrerKolonnerModule komponent', () => {
const renderComponent = (synligeKolonner: Array<TabellKolonne<Melding>>) =>
render(
<MeldingtabellFiltrerKolonner
synligeKolonner={synligeKolonner}
setSkjulteKolonner={setSkjulteKolonner}
alleKolonner={alleKolonner}
/>
);
it('skal kalle setSkjulteKolonner når en kolonne velges eller fjernes og endrer antall skjulte kolonner', () => {
const synligeKolonner = alleKolonner.slice(0, alleKolonner.length - 1); // All except the last one
renderComponent(synligeKolonner);
// Check the initial state: should show 'Vis/Skjul Kolonner'
const dropdown = screen.getByRole('combobox', {
name: '1 kolonner skjult',
});
expect(dropdown).toBeInTheDocument();
// Click to open the dropdown and hide one column
fireEvent.mouseDown(dropdown);
const kolonneToOption = screen.getByText(alleKolonner[1].tittel);
fireEvent.click(kolonneToOption);
expect(setSkjulteKolonner).toHaveBeenCalledWith(expect.any(Function));
const update = setSkjulteKolonner.mock.calls[0][0];
const updatedState = update(synligeKolonner);
// Filter out the hidden column
const oppdatertKolonne = synligeKolonner.filter(
(kolonne) => kolonne.tittel !== updatedState[0].tittel
);
// Re-render the component with the updated state
renderComponent(oppdatertKolonne);
// Check if the dropdown now shows "1 kolonne skjult"
const updatedDropdown = screen.getByRole('combobox', {
name: '2 kolonner skjult',
});
expect(updatedDropdown).toBeInTheDocument();
});
The first check on the dropdown passes, but the last one, returns that we cant find “2 kolonner skjult” it finds “1 kolonner skjult 2 kolonner skjult” instead.
Any help would be appreciated, tried everything I could think of