From df66d77b1ae73f1714cf62122ff650f812083e0c Mon Sep 17 00:00:00 2001 From: Nikhil Bhatia Date: Tue, 1 Oct 2024 17:18:18 -0700 Subject: [PATCH] Tests to ensure theme is reset when polls close --- .../voter_settings_manager.test.tsx | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/apps/scan/frontend/src/components/voter_settings_manager.test.tsx b/apps/scan/frontend/src/components/voter_settings_manager.test.tsx index 9f260d700f..7d08a80a70 100644 --- a/apps/scan/frontend/src/components/voter_settings_manager.test.tsx +++ b/apps/scan/frontend/src/components/voter_settings_manager.test.tsx @@ -17,13 +17,14 @@ import { provideApi, statusNoPaper, } from '../../test/helpers/mock_api_client'; -import { getScannerStatus } from '../api'; +import { getPollsInfo, getScannerStatus } from '../api'; import { scannerStatus } from '../../test/helpers/helpers'; let apiMock: ApiMock; let currentTheme: DefaultTheme; let voterSettingsManager: VoterSettingsManagerContextInterface; let scannerStatusQuery: ReturnType; +let pollsInfoQuery: ReturnType; let currentLanguage: LanguageCode; function TestThemeInspector(): null { @@ -32,6 +33,7 @@ function TestThemeInspector(): null { currentLanguage = useCurrentLanguage(); scannerStatusQuery = getScannerStatus.useQuery(); + pollsInfoQuery = getPollsInfo.useQuery(); return null; } @@ -54,6 +56,7 @@ beforeEach(() => { apiMock = createApiMock(); apiMock.removeCard(); apiMock.expectGetScannerStatus(statusNoPaper); + apiMock.expectGetPollsInfo('polls_open'); mockUseCurrentLanguage.mockReturnValue(LanguageCode.ENGLISH); render( @@ -196,3 +199,35 @@ test('Resets theme after successful scan', async () => { } } }); + +test('Resets theme after polls close', async () => { + // Simulate changing voter settings as voter + act(() => { + mockUseCurrentLanguage.mockReturnValue(LanguageCode.SPANISH); + voterSettingsManager.setColorMode('contrastLow'); + voterSettingsManager.setSizeMode('touchExtraLarge'); + }); + + expect(currentTheme).toEqual( + expect.objectContaining>({ + colorMode: 'contrastLow', + sizeMode: 'touchExtraLarge', + }) + ); + expect(currentLanguage).toEqual(LanguageCode.SPANISH); + + // Simulate polls closing + apiMock.expectGetPollsInfo('polls_closed_final'); + await pollsInfoQuery.refetch(); + + // Should reset voter settings when polls close + await waitFor(() => + expect(currentTheme).toEqual( + expect.objectContaining>({ + colorMode: 'contrastMedium', + sizeMode: 'touchMedium', + }) + ) + ); + expect(mockLanguageControls.reset).toHaveBeenCalled(); +});