import { h } from 'preact'; import * as Context from '../context'; import AppBar from '../AppBar'; import { fireEvent, render, screen } from 'testing-library'; describe('AppBar', () => { beforeEach(() => { jest.spyOn(Context, 'useDarkMode').mockImplementation(() => ({ setDarkMode: jest.fn(), })); jest.spyOn(Context, 'DarkModeProvider').mockImplementation(({ children }) => { return
{children}
; }); }); test('shows a menu on overflow click', async () => { render( ); const overflowButton = await screen.findByLabelText('More options'); fireEvent.click(overflowButton); const menu = await screen.findByRole('listbox'); expect(menu).toBeInTheDocument(); }); test('sets dark mode on MenuItem select', async () => { const setDarkModeSpy = jest.fn(); jest.spyOn(Context, 'useDarkMode').mockImplementation(() => ({ setDarkMode: setDarkModeSpy, })); render( ); const overflowButton = await screen.findByLabelText('More options'); fireEvent.click(overflowButton); await screen.findByRole('listbox'); fireEvent.click(screen.getByText('Light')); expect(setDarkModeSpy).toHaveBeenCalledWith('light'); }); });