Skip to content

Commit 0e84380

Browse files
committed
Write a test for localStorage layout
1 parent 55bcbef commit 0e84380

1 file changed

Lines changed: 37 additions & 1 deletion

File tree

src/pages/__tests__/Maker.test.tsx

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render, screen, fireEvent, prettyDOM, within } from '@testing-library/react';
1+
import { render, screen, fireEvent, prettyDOM, within, cleanup } from '@testing-library/react';
22
import { Maker } from '../../utils/pageImports';
33

44
const mockCourse = {
@@ -332,4 +332,40 @@ describe('Maker', () => {
332332
expect(screen.queryByTestId('load-slot-4')).toBeInTheDocument();
333333
expect(screen.queryByText(/Layout 1/)).not.toBeInTheDocument();
334334
});
335+
336+
it('uses localStorage to save layouts on refresh', () => {
337+
const grid = screen.getByTestId('grid');
338+
const layoutNameInput = screen.getByPlaceholderText('Layout name');
339+
const saveLayout = screen.getByTestId('save-layout');
340+
341+
// Have a saved layout and a layout in the grid
342+
fireEvent.change(stringInput, { target: { value: mockLayouts.ECE } });
343+
fireEvent.click(loadLayout);
344+
fireEvent.change(layoutNameInput, { target: { value: 'This exist??' } });
345+
fireEvent.click(saveLayout);
346+
fireEvent.change(stringInput, { target: { value: mockLayouts.CE } });
347+
fireEvent.click(loadLayout);
348+
349+
expect(screen.getByText(/This exist\?\?/)).toBeInTheDocument();
350+
expect(within(grid).getByText(/ECE345/)).toBeInTheDocument();
351+
352+
const layouts = JSON.parse(localStorage.getItem('savedLayouts') || '[]');
353+
expect(layouts).toHaveLength(1);
354+
355+
// Make sure refresh works by expecting filter to be reset on refresh
356+
const filterSearch = screen.getByTestId('filter-search');
357+
fireEvent.change(filterSearch, { target: { value: 'uuuuuuuu' } });
358+
expect(within(bucket).queryByText(/ECE463/)).not.toBeInTheDocument();
359+
360+
// Simulate rerender
361+
cleanup();
362+
render(<Maker />);
363+
364+
const newBucket = screen.getByTestId('bucket');
365+
const newGrid = screen.getByTestId('grid');
366+
expect(within(newBucket).getByText(/ECE463/)).toBeInTheDocument();
367+
368+
expect(screen.getByText(/This exist\?\?/)).toBeInTheDocument();
369+
expect(within(newGrid).getByText(/ECE345/)).toBeInTheDocument();
370+
});
335371
});

0 commit comments

Comments
 (0)