diff --git a/src/renderer/components/primitives/EmojiText.test.tsx b/src/renderer/components/primitives/EmojiText.test.tsx index d5cdbcc84..a0d21a4bc 100644 --- a/src/renderer/components/primitives/EmojiText.test.tsx +++ b/src/renderer/components/primitives/EmojiText.test.tsx @@ -1,7 +1,7 @@ import { render } from '@testing-library/react'; import { EmojiText, type IEmojiText } from './EmojiText'; -describe('renderer/components/primitives/Emoji.tsx', () => { +describe('renderer/components/primitives/EmojiText.tsx', () => { it('should render', () => { const props: IEmojiText = { text: '🍺', diff --git a/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap b/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap index 697cea39a..fcdc09413 100644 --- a/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap +++ b/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renderer/components/primitives/Emoji.tsx should render 1`] = ` +exports[`renderer/components/primitives/EmojiText.tsx should render 1`] = ` { "asFragment": [Function], "baseElement": diff --git a/src/renderer/components/settings/AppearanceSettings.test.tsx b/src/renderer/components/settings/AppearanceSettings.test.tsx index 94ff794e7..3c60490f4 100644 --- a/src/renderer/components/settings/AppearanceSettings.test.tsx +++ b/src/renderer/components/settings/AppearanceSettings.test.tsx @@ -9,7 +9,7 @@ import { import { AppContext } from '../../context/App'; import { AppearanceSettings } from './AppearanceSettings'; -describe('renderer/routes/components/settings/AppearanceSettings.tsx', () => { +describe('renderer/components/settings/AppearanceSettings.tsx', () => { const updateSetting = jest.fn(); const zoomTimeout = () => new Promise((r) => setTimeout(r, 300)); diff --git a/src/renderer/components/settings/NotificationSettings.test.tsx b/src/renderer/components/settings/NotificationSettings.test.tsx index 0776d3f4b..d27db6c9b 100644 --- a/src/renderer/components/settings/NotificationSettings.test.tsx +++ b/src/renderer/components/settings/NotificationSettings.test.tsx @@ -5,7 +5,7 @@ import { AppContext } from '../../context/App'; import * as comms from '../../utils/comms'; import { NotificationSettings } from './NotificationSettings'; -describe('renderer/routes/components/settings/NotificationSettings.tsx', () => { +describe('renderer/components/settings/NotificationSettings.tsx', () => { const updateSetting = jest.fn(); afterEach(() => { diff --git a/src/renderer/components/settings/SettingsFooter.test.tsx b/src/renderer/components/settings/SettingsFooter.test.tsx index 0f301d72e..cf5c7fa85 100644 --- a/src/renderer/components/settings/SettingsFooter.test.tsx +++ b/src/renderer/components/settings/SettingsFooter.test.tsx @@ -11,7 +11,7 @@ jest.mock('react-router-dom', () => ({ useNavigate: () => mockNavigate, })); -describe('renderer/routes/components/settings/SettingsFooter.tsx', () => { +describe('renderer/components/settings/SettingsFooter.tsx', () => { let originalEnv: NodeJS.ProcessEnv; beforeEach(() => { diff --git a/src/renderer/components/settings/SettingsReset.test.tsx b/src/renderer/components/settings/SettingsReset.test.tsx new file mode 100644 index 000000000..0293e5e38 --- /dev/null +++ b/src/renderer/components/settings/SettingsReset.test.tsx @@ -0,0 +1,63 @@ +import { act, fireEvent, render, screen } from '@testing-library/react'; +import { MemoryRouter } from 'react-router-dom'; +import { mockAuth, mockSettings } from '../../__mocks__/state-mocks'; +import { AppContext } from '../../context/App'; +import { SettingsReset } from './SettingsReset'; + +describe('renderer/components/settings/SettingsReset.tsx', () => { + const resetSettings = jest.fn(); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should reset default settings when `OK`', async () => { + window.confirm = jest.fn(() => true); // always click 'OK' + + await act(async () => { + render( + + + + + , + ); + }); + + fireEvent.click(screen.getByTestId('settings-reset')); + fireEvent.click(screen.getByText('Reset')); + + expect(resetSettings).toHaveBeenCalled(); + }); + + it('should skip reset default settings when `cancelled`', async () => { + window.confirm = jest.fn(() => false); // always click 'cancel' + + await act(async () => { + render( + + + + + , + ); + }); + + fireEvent.click(screen.getByTestId('settings-reset')); + fireEvent.click(screen.getByText('Cancel')); + + expect(resetSettings).not.toHaveBeenCalled(); + }); +}); diff --git a/src/renderer/components/settings/SettingsReset.tsx b/src/renderer/components/settings/SettingsReset.tsx new file mode 100644 index 000000000..e77209d6c --- /dev/null +++ b/src/renderer/components/settings/SettingsReset.tsx @@ -0,0 +1,51 @@ +import { type FC, useCallback, useContext, useState } from 'react'; + +import { Button, Stack, Text } from '@primer/react'; +import { Dialog } from '@primer/react/experimental'; +import { AppContext } from '../../context/App'; + +export const SettingsReset: FC = () => { + const { resetSettings } = useContext(AppContext); + const [isOpen, setIsOpen] = useState(false); + const onDialogClose = useCallback(() => setIsOpen(false), []); + const onDialogProceed = useCallback(() => { + resetSettings(); + setIsOpen(false); + }, [resetSettings]); + + return ( + + + {isOpen && ( + + Please confirm that you want to reset all settings to the{' '} + Gitify defaults + + )} + + ); +}; diff --git a/src/renderer/components/settings/SystemSettings.test.tsx b/src/renderer/components/settings/SystemSettings.test.tsx index 0ecc19567..6cc78d44d 100644 --- a/src/renderer/components/settings/SystemSettings.test.tsx +++ b/src/renderer/components/settings/SystemSettings.test.tsx @@ -4,7 +4,7 @@ import { mockAuth, mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; import { SystemSettings } from './SystemSettings'; -describe('renderer/routes/components/settings/SystemSettings.tsx', () => { +describe('renderer/components/settings/SystemSettings.tsx', () => { const updateSetting = jest.fn(); afterEach(() => { diff --git a/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap b/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap index ffe664526..fef41bc4c 100644 --- a/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap +++ b/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renderer/routes/components/settings/SettingsFooter.tsx app version should show development app version 1`] = ` +exports[`renderer/components/settings/SettingsFooter.tsx app version should show development app version 1`] = ` - {isOpen && ( - - Please confirm that you want to reset all settings to the{' '} - Gitify defaults - - )} + diff --git a/src/renderer/routes/__snapshots__/Settings.test.tsx.snap b/src/renderer/routes/__snapshots__/Settings.test.tsx.snap index b408e6775..c5a07dae8 100644 --- a/src/renderer/routes/__snapshots__/Settings.test.tsx.snap +++ b/src/renderer/routes/__snapshots__/Settings.test.tsx.snap @@ -1219,36 +1219,36 @@ exports[`renderer/routes/Settings.tsx should render itself & its children 1`] = - -
- + +