diff --git a/src/main/menu.test.ts b/src/main/menu.test.ts index dfea5a3f3..5055c6b3b 100644 --- a/src/main/menu.test.ts +++ b/src/main/menu.test.ts @@ -1,5 +1,6 @@ import { Menu, MenuItem } from 'electron'; import type { Menubar } from 'menubar'; + import MenuBuilder from './menu'; jest.mock('electron', () => ({ diff --git a/src/renderer/components/AllRead.test.tsx b/src/renderer/components/AllRead.test.tsx index 80ff5409a..b43c833d7 100644 --- a/src/renderer/components/AllRead.test.tsx +++ b/src/renderer/components/AllRead.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; + import { mockSettings } from '../__mocks__/state-mocks'; import { ensureStableEmojis } from '../__mocks__/utils'; import { AppContext } from '../context/App'; diff --git a/src/renderer/components/Oops.test.tsx b/src/renderer/components/Oops.test.tsx index 319357448..4293911b1 100644 --- a/src/renderer/components/Oops.test.tsx +++ b/src/renderer/components/Oops.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { ensureStableEmojis } from '../__mocks__/utils'; import { Oops } from './Oops'; diff --git a/src/renderer/components/Sidebar.test.tsx b/src/renderer/components/Sidebar.test.tsx index cb80eb6e1..55c7186bf 100644 --- a/src/renderer/components/Sidebar.test.tsx +++ b/src/renderer/components/Sidebar.test.tsx @@ -1,5 +1,7 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../__mocks__/notifications-mocks'; import { mockAuth, mockSettings } from '../__mocks__/state-mocks'; import { AppContext } from '../context/App'; @@ -59,7 +61,7 @@ describe('renderer/components/Sidebar.tsx', () => { expect(tree).toMatchSnapshot(); }); - it('should navigate home when clicking the gitify logo', () => { + it('should navigate home when clicking the gitify logo', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-home')); + await userEvent.click(screen.getByTestId('sidebar-home')); + expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true }); }); describe('notifications icon', () => { - it('opens notifications home when clicked', () => { + it('opens notifications home when clicked', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-notifications')); + await userEvent.click(screen.getByTestId('sidebar-notifications')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -144,7 +147,7 @@ describe('renderer/components/Sidebar.tsx', () => { }); describe('Filter notifications', () => { - it('go to the filters route', () => { + it('go to the filters route', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-filter-notifications')); + await userEvent.click(screen.getByTestId('sidebar-filter-notifications')); expect(mockNavigate).toHaveBeenNthCalledWith(1, '/filters'); }); - it('go to the home if filters path already shown', () => { + it('go to the home if filters path already shown', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-filter-notifications')); + await userEvent.click(screen.getByTestId('sidebar-filter-notifications')); expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true }); }); }); describe('quick links', () => { - it('opens my github issues page', () => { + it('opens my github issues page', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-my-issues')); + await userEvent.click(screen.getByTestId('sidebar-my-issues')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -212,7 +215,7 @@ describe('renderer/components/Sidebar.tsx', () => { ); }); - it('opens my github pull requests page', () => { + it('opens my github pull requests page', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-my-pull-requests')); + await userEvent.click(screen.getByTestId('sidebar-my-pull-requests')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -238,7 +241,7 @@ describe('renderer/components/Sidebar.tsx', () => { }); describe('Refresh Notifications', () => { - it('should refresh the notifications when status is not loading', () => { + it('should refresh the notifications when status is not loading', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-refresh')); + await userEvent.click(screen.getByTestId('sidebar-refresh')); expect(fetchNotifications).toHaveBeenCalledTimes(1); }); - it('should not refresh the notifications when status is loading', () => { + it('should not refresh the notifications when status is loading', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-refresh')); + await userEvent.click(screen.getByTestId('sidebar-refresh')); expect(fetchNotifications).not.toHaveBeenCalled(); }); }); describe('Settings', () => { - it('go to the settings route', () => { + it('go to the settings route', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-settings')); + await userEvent.click(screen.getByTestId('sidebar-settings')); expect(mockNavigate).toHaveBeenNthCalledWith(1, '/settings'); }); - it('go to the home if settings path already shown', () => { + it('go to the home if settings path already shown', async () => { render( { , ); - fireEvent.click(screen.getByTestId('sidebar-settings')); + await userEvent.click(screen.getByTestId('sidebar-settings')); expect(fetchNotifications).toHaveBeenCalledTimes(1); expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true }); }); }); - it('should quit the app', () => { + it('should quit the app', async () => { const quitAppMock = jest.spyOn(comms, 'quitApp'); render( @@ -349,7 +352,7 @@ describe('renderer/components/Sidebar.tsx', () => { , ); - fireEvent.click(screen.getByTestId('sidebar-quit')); + await userEvent.click(screen.getByTestId('sidebar-quit')); expect(quitAppMock).toHaveBeenCalledTimes(1); }); diff --git a/src/renderer/components/fields/Checkbox.test.tsx b/src/renderer/components/fields/Checkbox.test.tsx index 0620300e9..623a59d91 100644 --- a/src/renderer/components/fields/Checkbox.test.tsx +++ b/src/renderer/components/fields/Checkbox.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { Checkbox, type ICheckbox } from './Checkbox'; describe('renderer/components/fields/Checkbox.tsx', () => { diff --git a/src/renderer/components/fields/FieldLabel.test.tsx b/src/renderer/components/fields/FieldLabel.test.tsx index 31f76978d..e10a2e655 100644 --- a/src/renderer/components/fields/FieldLabel.test.tsx +++ b/src/renderer/components/fields/FieldLabel.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { FieldLabel, type IFieldLabel } from './FieldLabel'; describe('renderer/components/fields/FieldLabel.tsx', () => { diff --git a/src/renderer/components/fields/RadioGroup.test.tsx b/src/renderer/components/fields/RadioGroup.test.tsx index eeb2ba652..1a433383d 100644 --- a/src/renderer/components/fields/RadioGroup.test.tsx +++ b/src/renderer/components/fields/RadioGroup.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { type IRadioGroup, RadioGroup } from './RadioGroup'; describe('renderer/components/fields/RadioGroup.tsx', () => { diff --git a/src/renderer/components/fields/Tooltip.test.tsx b/src/renderer/components/fields/Tooltip.test.tsx index ae81a48d4..466f3ee24 100644 --- a/src/renderer/components/fields/Tooltip.test.tsx +++ b/src/renderer/components/fields/Tooltip.test.tsx @@ -1,4 +1,6 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { type ITooltip, Tooltip } from './Tooltip'; describe('renderer/components/fields/Tooltip.tsx', () => { @@ -12,15 +14,15 @@ describe('renderer/components/fields/Tooltip.tsx', () => { expect(tree).toMatchSnapshot(); }); - it('should display on mouse enter / leave', () => { + it('should display on mouse enter / leave', async () => { render(); const tooltipElement = screen.getByTestId('tooltip-test'); - fireEvent.mouseEnter(tooltipElement); + await userEvent.hover(tooltipElement); expect(tooltipElement).toMatchSnapshot(); - fireEvent.mouseLeave(tooltipElement); + await userEvent.unhover(tooltipElement); expect(tooltipElement).toMatchSnapshot(); }); }); diff --git a/src/renderer/components/filters/FilterSection.test.tsx b/src/renderer/components/filters/FilterSection.test.tsx index 832b48a15..bd087db6e 100644 --- a/src/renderer/components/filters/FilterSection.test.tsx +++ b/src/renderer/components/filters/FilterSection.test.tsx @@ -1,6 +1,8 @@ import { MarkGithubIcon } from '@primer/octicons-react'; -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; @@ -98,7 +100,7 @@ describe('renderer/components/filters/FilterSection.tsx', () => { ); }); - fireEvent.click(screen.getByLabelText('Open')); + await userEvent.click(screen.getByLabelText('Open')); expect(updateFilter).toHaveBeenCalledWith(mockFilterSetting, 'open', true); @@ -133,7 +135,7 @@ describe('renderer/components/filters/FilterSection.tsx', () => { ); }); - fireEvent.click(screen.getByLabelText('Closed')); + await userEvent.click(screen.getByLabelText('Closed')); expect(updateFilter).toHaveBeenCalledWith( mockFilterSetting, diff --git a/src/renderer/components/filters/ReasonFilter.test.tsx b/src/renderer/components/filters/ReasonFilter.test.tsx index 485cd2156..9fe104f18 100644 --- a/src/renderer/components/filters/ReasonFilter.test.tsx +++ b/src/renderer/components/filters/ReasonFilter.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; diff --git a/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx b/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx index 0ddc41dc8..f0348091f 100644 --- a/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx +++ b/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; diff --git a/src/renderer/components/filters/StateFilter.test.tsx b/src/renderer/components/filters/StateFilter.test.tsx index 316a417f6..264bafac3 100644 --- a/src/renderer/components/filters/StateFilter.test.tsx +++ b/src/renderer/components/filters/StateFilter.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; diff --git a/src/renderer/components/filters/SubjectTypeFilter.test.tsx b/src/renderer/components/filters/SubjectTypeFilter.test.tsx index b9f8cf3f2..e6c86b800 100644 --- a/src/renderer/components/filters/SubjectTypeFilter.test.tsx +++ b/src/renderer/components/filters/SubjectTypeFilter.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; diff --git a/src/renderer/components/filters/UserHandleFilter.test.tsx b/src/renderer/components/filters/UserHandleFilter.test.tsx index 0892de338..796791cf2 100644 --- a/src/renderer/components/filters/UserHandleFilter.test.tsx +++ b/src/renderer/components/filters/UserHandleFilter.test.tsx @@ -1,5 +1,7 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; @@ -76,14 +78,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => { ); }); - fireEvent.change(screen.getByTitle('Include handles'), { - target: { value: 'github-user' }, - }); - - fireEvent.keyDown(screen.getByTitle('Include handles'), { - key: 'Enter', - code: 'Enter', - }); + await userEvent.type( + screen.getByTitle('Include handles'), + 'github-user{enter}', + ); expect(updateFilter).toHaveBeenCalledWith( 'filterIncludeHandles', @@ -112,14 +110,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => { ); }); - fireEvent.change(screen.getByTitle('Include handles'), { - target: { value: 'github-user' }, - }); - - fireEvent.keyDown(screen.getByTitle('Include handles'), { - key: 'Enter', - code: 'Enter', - }); + await userEvent.type( + screen.getByTitle('Include handles'), + 'github-user{enter}', + ); expect(updateFilter).toHaveBeenCalledTimes(0); }); @@ -146,14 +140,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => { ); }); - fireEvent.change(screen.getByTitle('Exclude handles'), { - target: { value: 'github-user' }, - }); - - fireEvent.keyDown(screen.getByTitle('Exclude handles'), { - key: 'Enter', - code: 'Enter', - }); + await userEvent.type( + screen.getByTitle('Exclude handles'), + 'github-user{enter}', + ); expect(updateFilter).toHaveBeenCalledWith( 'filterExcludeHandles', @@ -182,14 +172,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => { ); }); - fireEvent.change(screen.getByTitle('Exclude handles'), { - target: { value: 'github-user' }, - }); - - fireEvent.keyDown(screen.getByTitle('Exclude handles'), { - key: 'Enter', - code: 'Enter', - }); + await userEvent.type( + screen.getByTitle('Exclude handles'), + 'github-user{enter}', + ); expect(updateFilter).toHaveBeenCalledTimes(0); }); diff --git a/src/renderer/components/filters/UserTypeFilter.test.tsx b/src/renderer/components/filters/UserTypeFilter.test.tsx index 4ade31495..c1433500a 100644 --- a/src/renderer/components/filters/UserTypeFilter.test.tsx +++ b/src/renderer/components/filters/UserTypeFilter.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; diff --git a/src/renderer/components/icons/LogoIcon.test.tsx b/src/renderer/components/icons/LogoIcon.test.tsx index 13fd19597..ccd4f61a3 100644 --- a/src/renderer/components/icons/LogoIcon.test.tsx +++ b/src/renderer/components/icons/LogoIcon.test.tsx @@ -1,4 +1,6 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { Size } from '../../types'; import { LogoIcon } from './LogoIcon'; @@ -15,11 +17,11 @@ describe('renderer/components/icons/LogoIcon.tsx', () => { expect(tree).toMatchSnapshot(); }); - it('should click on the logo', () => { + it('should click on the logo', async () => { const onClick = jest.fn(); render(); - fireEvent.click(screen.getByLabelText('Gitify Logo')); + await userEvent.click(screen.getByLabelText('Gitify Logo')); expect(onClick).toHaveBeenCalledTimes(1); }); diff --git a/src/renderer/components/layout/Centered.test.tsx b/src/renderer/components/layout/Centered.test.tsx index f7103406c..9bb464304 100644 --- a/src/renderer/components/layout/Centered.test.tsx +++ b/src/renderer/components/layout/Centered.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { Centered } from './Centered'; describe('renderer/components/layout/Centered.tsx', () => { diff --git a/src/renderer/components/layout/Contents.test.tsx b/src/renderer/components/layout/Contents.test.tsx index 79b1dc6db..c8d2bce0d 100644 --- a/src/renderer/components/layout/Contents.test.tsx +++ b/src/renderer/components/layout/Contents.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { Contents } from './Contents'; describe('renderer/components/layout/Contents.tsx', () => { diff --git a/src/renderer/components/layout/EmojiSplash.test.tsx b/src/renderer/components/layout/EmojiSplash.test.tsx index 313c95986..a8b0dc212 100644 --- a/src/renderer/components/layout/EmojiSplash.test.tsx +++ b/src/renderer/components/layout/EmojiSplash.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { EmojiSplash } from './EmojiSplash'; describe('renderer/components/layout/EmojiSplash.tsx', () => { diff --git a/src/renderer/components/layout/Page.test.tsx b/src/renderer/components/layout/Page.test.tsx index bf51c7ec6..92aae65fd 100644 --- a/src/renderer/components/layout/Page.test.tsx +++ b/src/renderer/components/layout/Page.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { Page } from './Page'; describe('renderer/components/layout/Page.tsx', () => { diff --git a/src/renderer/components/metrics/MetricGroup.test.tsx b/src/renderer/components/metrics/MetricGroup.test.tsx index 6be4727f6..c74849a39 100644 --- a/src/renderer/components/metrics/MetricGroup.test.tsx +++ b/src/renderer/components/metrics/MetricGroup.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; import type { Milestone } from '../../typesGitHub'; diff --git a/src/renderer/components/metrics/MetricPill.test.tsx b/src/renderer/components/metrics/MetricPill.test.tsx index ceed253bf..6c3a103ba 100644 --- a/src/renderer/components/metrics/MetricPill.test.tsx +++ b/src/renderer/components/metrics/MetricPill.test.tsx @@ -1,5 +1,6 @@ import { MarkGithubIcon } from '@primer/octicons-react'; import { render } from '@testing-library/react'; + import { IconColor } from '../../types'; import { type IMetricPill, MetricPill } from './MetricPill'; diff --git a/src/renderer/components/notifications/AccountNotifications.test.tsx b/src/renderer/components/notifications/AccountNotifications.test.tsx index b2a7825dc..c55989cb2 100644 --- a/src/renderer/components/notifications/AccountNotifications.test.tsx +++ b/src/renderer/components/notifications/AccountNotifications.test.tsx @@ -1,4 +1,6 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { mockGitHubCloudAccount, mockSettings, @@ -34,6 +36,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -52,6 +55,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -68,6 +72,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -88,6 +93,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -103,15 +109,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { error: null, }; - await act(async () => { - render( - - - , - ); - }); + render( + + + , + ); - fireEvent.click(screen.getByTestId('account-profile')); + await userEvent.click(screen.getByTestId('account-profile')); expect(openAccountProfileMock).toHaveBeenCalledTimes(1); expect(openAccountProfileMock).toHaveBeenCalledWith(mockGitHubCloudAccount); @@ -129,15 +133,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { error: null, }; - await act(async () => { - render( - - - , - ); - }); + render( + + + , + ); - fireEvent.click(screen.getByTestId('account-issues')); + await userEvent.click(screen.getByTestId('account-issues')); expect(openMyIssuesMock).toHaveBeenCalledTimes(1); expect(openMyIssuesMock).toHaveBeenCalledWith( @@ -157,15 +159,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { error: null, }; - await act(async () => { - render( - - - , - ); - }); + render( + + + , + ); - fireEvent.click(screen.getByTestId('account-pull-requests')); + await userEvent.click(screen.getByTestId('account-pull-requests')); expect(openPullRequestsMock).toHaveBeenCalledTimes(1); expect(openPullRequestsMock).toHaveBeenCalledWith( @@ -181,15 +181,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => { error: null, }; - await act(async () => { - render( - - - , - ); - }); + render( + + + , + ); - fireEvent.click(screen.getByTestId('account-toggle')); + await userEvent.click(screen.getByTestId('account-toggle')); const tree = render( diff --git a/src/renderer/components/notifications/NotificationFooter.test.tsx b/src/renderer/components/notifications/NotificationFooter.test.tsx index 559721bc1..f7ee60fa8 100644 --- a/src/renderer/components/notifications/NotificationFooter.test.tsx +++ b/src/renderer/components/notifications/NotificationFooter.test.tsx @@ -1,4 +1,6 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { mockGitHubCloudAccount, mockSettings, @@ -31,6 +33,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -51,6 +54,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -72,6 +76,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -92,6 +97,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); }); @@ -113,10 +119,11 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); - it('should open notification user profile', () => { + it('should open notification user profile', async () => { const openExternalLinkMock = jest .spyOn(comms, 'openExternalLink') .mockImplementation(); @@ -149,7 +156,8 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => { , ); - fireEvent.click(screen.getByTestId('view-profile')); + await userEvent.click(screen.getByTestId('view-profile')); + expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( props.notification.subject.user.html_url, diff --git a/src/renderer/components/notifications/NotificationHeader.test.tsx b/src/renderer/components/notifications/NotificationHeader.test.tsx index 9415ba26e..712977216 100644 --- a/src/renderer/components/notifications/NotificationHeader.test.tsx +++ b/src/renderer/components/notifications/NotificationHeader.test.tsx @@ -1,4 +1,6 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; import { GroupBy } from '../../types'; @@ -23,6 +25,7 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -39,6 +42,7 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -60,6 +64,7 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -78,11 +83,12 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); }); - it('should open notification user profile - group by date', () => { + it('should open notification user profile - group by date', async () => { const openExternalLinkMock = jest .spyOn(comms, 'openExternalLink') .mockImplementation(); @@ -99,7 +105,8 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => { , ); - fireEvent.click(screen.getByTestId('view-repository')); + await userEvent.click(screen.getByTestId('view-repository')); + expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( props.notification.repository.html_url, diff --git a/src/renderer/components/notifications/NotificationRow.test.tsx b/src/renderer/components/notifications/NotificationRow.test.tsx index b440aa1dd..2a47f0c34 100644 --- a/src/renderer/components/notifications/NotificationRow.test.tsx +++ b/src/renderer/components/notifications/NotificationRow.test.tsx @@ -1,4 +1,6 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { mockAuth, mockGitHubCloudAccount, @@ -36,6 +38,7 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -56,6 +59,7 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); @@ -76,11 +80,12 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); + expect(tree).toMatchSnapshot(); }); describe('notification interactions', () => { - it('should open a notification in the browser - click', () => { + it('should open a notification in the browser - click', async () => { const markNotificationsAsRead = jest.fn(); const props = { @@ -100,12 +105,13 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); - fireEvent.click(screen.getByTestId('notification-row')); + await userEvent.click(screen.getByTestId('notification-row')); + expect(links.openNotification).toHaveBeenCalledTimes(1); expect(markNotificationsAsRead).toHaveBeenCalledTimes(1); }); - it('should open a notification in the browser - delay notification setting enabled', () => { + it('should open a notification in the browser - delay notification setting enabled', async () => { const markNotificationsAsRead = jest.fn(); const props = { @@ -129,12 +135,13 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); - fireEvent.click(screen.getByTestId('notification-row')); + await userEvent.click(screen.getByTestId('notification-row')); + expect(links.openNotification).toHaveBeenCalledTimes(1); expect(markNotificationsAsRead).toHaveBeenCalledTimes(1); }); - it('should open a notification in browser & mark it as done', () => { + it('should open a notification in browser & mark it as done', async () => { const markNotificationsAsDone = jest.fn(); const props = { @@ -154,12 +161,13 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); - fireEvent.click(screen.getByTestId('notification-row')); + await userEvent.click(screen.getByTestId('notification-row')); + expect(links.openNotification).toHaveBeenCalledTimes(1); expect(markNotificationsAsDone).toHaveBeenCalledTimes(1); }); - it('should mark notifications as read', () => { + it('should mark notifications as read', async () => { const markNotificationsAsRead = jest.fn(); const props = { @@ -178,11 +186,12 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); - fireEvent.click(screen.getByTestId('notification-mark-as-read')); + await userEvent.click(screen.getByTestId('notification-mark-as-read')); + expect(markNotificationsAsRead).toHaveBeenCalledTimes(1); }); - it('should mark notifications as done', () => { + it('should mark notifications as done', async () => { const markNotificationsAsDone = jest.fn(); const props = { @@ -198,11 +207,12 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); - fireEvent.click(screen.getByTestId('notification-mark-as-done')); + await userEvent.click(screen.getByTestId('notification-mark-as-done')); + expect(markNotificationsAsDone).toHaveBeenCalledTimes(1); }); - it('should unsubscribe from a notification thread', () => { + it('should unsubscribe from a notification thread', async () => { const unsubscribeNotification = jest.fn(); const props = { @@ -219,9 +229,11 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => { , ); - fireEvent.click( + + await userEvent.click( screen.getByTestId('notification-unsubscribe-from-thread'), ); + expect(unsubscribeNotification).toHaveBeenCalledTimes(1); }); }); diff --git a/src/renderer/components/notifications/RepositoryNotifications.test.tsx b/src/renderer/components/notifications/RepositoryNotifications.test.tsx index 72cb19b65..90b725bb9 100644 --- a/src/renderer/components/notifications/RepositoryNotifications.test.tsx +++ b/src/renderer/components/notifications/RepositoryNotifications.test.tsx @@ -1,4 +1,6 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { mockGitHubCloudAccount, mockSettings, @@ -33,10 +35,11 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () => , ); + expect(tree).toMatchSnapshot(); }); - it('should open the browser when clicking on the repo name', () => { + it('should open the browser when clicking on the repo name', async () => { const openExternalLinkMock = jest .spyOn(comms, 'openExternalLink') .mockImplementation(); @@ -47,7 +50,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () => , ); - fireEvent.click(screen.getByTestId('open-repository')); + await userEvent.click(screen.getByTestId('open-repository')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -55,7 +58,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () => ); }); - it('should mark a repo as read', () => { + it('should mark a repo as read', async () => { render( , ); - fireEvent.click(screen.getByTestId('repository-mark-as-read')); + await userEvent.click(screen.getByTestId('repository-mark-as-read')); expect(markNotificationsAsRead).toHaveBeenCalledWith( mockGitHubNotifications, ); }); - it('should mark a repo as done', () => { + it('should mark a repo as done', async () => { render( , ); - fireEvent.click(screen.getByTestId('repository-mark-as-done')); + await userEvent.click(screen.getByTestId('repository-mark-as-done')); expect(markNotificationsAsDone).toHaveBeenCalledWith( mockGitHubNotifications, @@ -95,6 +98,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () => , ); + expect(tree).toMatchSnapshot(); }); @@ -103,7 +107,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () => render(); }); - fireEvent.click(screen.getByTestId('repository-toggle')); + await userEvent.click(screen.getByTestId('repository-toggle')); const tree = render(); expect(tree).toMatchSnapshot(); diff --git a/src/renderer/components/primitives/CustomCounter.test.tsx b/src/renderer/components/primitives/CustomCounter.test.tsx index 60239b859..d477615c5 100644 --- a/src/renderer/components/primitives/CustomCounter.test.tsx +++ b/src/renderer/components/primitives/CustomCounter.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { CustomCounter } from './CustomCounter'; describe('renderer/components/primitives/CustomCounter.tsx', () => { diff --git a/src/renderer/components/primitives/EmojiText.test.tsx b/src/renderer/components/primitives/EmojiText.test.tsx index a0d21a4bc..9363554e8 100644 --- a/src/renderer/components/primitives/EmojiText.test.tsx +++ b/src/renderer/components/primitives/EmojiText.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { EmojiText, type IEmojiText } from './EmojiText'; describe('renderer/components/primitives/EmojiText.tsx', () => { diff --git a/src/renderer/components/primitives/Footer.test.tsx b/src/renderer/components/primitives/Footer.test.tsx index 77e713abd..e932c704e 100644 --- a/src/renderer/components/primitives/Footer.test.tsx +++ b/src/renderer/components/primitives/Footer.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { Footer } from './Footer'; describe('renderer/components/primitives/Footer.tsx', () => { diff --git a/src/renderer/components/primitives/Header.test.tsx b/src/renderer/components/primitives/Header.test.tsx index 50ad7c581..ffc23ac5b 100644 --- a/src/renderer/components/primitives/Header.test.tsx +++ b/src/renderer/components/primitives/Header.test.tsx @@ -1,5 +1,7 @@ import { MarkGithubIcon } from '@primer/octicons-react'; -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + import { AppContext } from '../../context/App'; import { Header } from './Header'; @@ -22,15 +24,15 @@ describe('renderer/components/primitives/Header.tsx', () => { expect(tree).toMatchSnapshot(); }); - it('should navigate back', () => { + it('should navigate back', async () => { render(
Test Header
); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); - it('should navigate back and fetch notifications', () => { + it('should navigate back and fetch notifications', async () => { render( { , ); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); expect(fetchNotifications).toHaveBeenCalledTimes(1); diff --git a/src/renderer/components/primitives/HoverButton.test.tsx b/src/renderer/components/primitives/HoverButton.test.tsx index a09534dc5..be4606262 100644 --- a/src/renderer/components/primitives/HoverButton.test.tsx +++ b/src/renderer/components/primitives/HoverButton.test.tsx @@ -1,5 +1,6 @@ import { MarkGithubIcon } from '@primer/octicons-react'; import { render } from '@testing-library/react'; + import { HoverButton } from './HoverButton'; describe('renderer/components/primitives/HoverButton.tsx', () => { diff --git a/src/renderer/components/primitives/HoverGroup.test.tsx b/src/renderer/components/primitives/HoverGroup.test.tsx index 5ab612f3a..c8fc8bd9a 100644 --- a/src/renderer/components/primitives/HoverGroup.test.tsx +++ b/src/renderer/components/primitives/HoverGroup.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { HoverGroup } from './HoverGroup'; describe('renderer/components/primitives/HoverGroup.tsx', () => { diff --git a/src/renderer/components/primitives/Title.test.tsx b/src/renderer/components/primitives/Title.test.tsx index e20d60fd5..647f863be 100644 --- a/src/renderer/components/primitives/Title.test.tsx +++ b/src/renderer/components/primitives/Title.test.tsx @@ -1,5 +1,6 @@ import { PersonFillIcon } from '@primer/octicons-react'; import { render } from '@testing-library/react'; + import { Title } from './Title'; describe('renderer/routes/components/primitives/Title.tsx', () => { diff --git a/src/renderer/components/settings/AppearanceSettings.test.tsx b/src/renderer/components/settings/AppearanceSettings.test.tsx index 3c60490f4..1c65a1095 100644 --- a/src/renderer/components/settings/AppearanceSettings.test.tsx +++ b/src/renderer/components/settings/AppearanceSettings.test.tsx @@ -1,6 +1,8 @@ import { act, fireEvent, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { webFrame } from 'electron'; import { MemoryRouter } from 'react-router-dom'; + import { mockAuth, mockGitHubAppAccount, @@ -34,8 +36,10 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => { ); }); - const select = screen.getByTestId('settings-theme') as HTMLSelectElement; - fireEvent.change(select, { target: { value: 'LIGHT' } }); + await userEvent.selectOptions( + screen.getByTestId('settings-theme'), + 'LIGHT', + ); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('theme', 'LIGHT'); @@ -90,32 +94,35 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => { ); }); + // Zoom Out await act(async () => { - fireEvent.click(screen.getByTestId('settings-zoom-out')); + await userEvent.click(screen.getByTestId('settings-zoom-out')); await zoomTimeout(); - }); - expect(updateSetting).toHaveBeenCalledTimes(1); - expect(updateSetting).toHaveBeenCalledWith('zoomPercentage', 90); + expect(updateSetting).toHaveBeenCalledTimes(1); + expect(updateSetting).toHaveBeenCalledWith('zoomPercentage', 90); + }); await act(async () => { - fireEvent.click(screen.getByTestId('settings-zoom-out')); + await userEvent.click(screen.getByTestId('settings-zoom-out')); await zoomTimeout(); expect(updateSetting).toHaveBeenCalledTimes(2); expect(updateSetting).toHaveBeenNthCalledWith(2, 'zoomPercentage', 80); }); + // Zoom In await act(async () => { - fireEvent.click(screen.getByTestId('settings-zoom-in')); + await userEvent.click(screen.getByTestId('settings-zoom-in')); await zoomTimeout(); expect(updateSetting).toHaveBeenCalledTimes(3); expect(updateSetting).toHaveBeenNthCalledWith(3, 'zoomPercentage', 90); }); + // Zoom Reset await act(async () => { - fireEvent.click(screen.getByTestId('settings-zoom-reset')); + await userEvent.click(screen.getByTestId('settings-zoom-reset')); await zoomTimeout(); expect(updateSetting).toHaveBeenCalledTimes(4); @@ -142,7 +149,7 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-showAccountHeader')); + await userEvent.click(screen.getByTestId('checkbox-showAccountHeader')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('showAccountHeader', true); @@ -167,7 +174,7 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-wrapNotificationTitle')); + await userEvent.click(screen.getByTestId('checkbox-wrapNotificationTitle')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('wrapNotificationTitle', true); diff --git a/src/renderer/components/settings/NotificationSettings.test.tsx b/src/renderer/components/settings/NotificationSettings.test.tsx index 329d447e3..23ee6107b 100644 --- a/src/renderer/components/settings/NotificationSettings.test.tsx +++ b/src/renderer/components/settings/NotificationSettings.test.tsx @@ -1,5 +1,7 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAuth, mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; import * as comms from '../../utils/comms'; @@ -29,7 +31,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('radio-groupBy-date')); + await userEvent.click(screen.getByTestId('radio-groupBy-date')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('groupBy', 'DATE'); @@ -52,9 +54,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-fetchAllNotifications'), { - target: { checked: true }, - }); + await userEvent.click(screen.getByTestId('checkbox-fetchAllNotifications')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('fetchAllNotifications', false); @@ -77,7 +77,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-detailedNotifications')); + await userEvent.click(screen.getByTestId('checkbox-detailedNotifications')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('detailedNotifications', false); @@ -100,7 +100,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-showPills')); + await userEvent.click(screen.getByTestId('checkbox-showPills')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('showPills', false); @@ -123,7 +123,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-showNumber')); + await userEvent.click(screen.getByTestId('checkbox-showNumber')); expect(updateSetting).toHaveBeenCalledTimes(1); expect(updateSetting).toHaveBeenCalledWith('showNumber', false); @@ -146,12 +146,10 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-showOnlyParticipating'), { - target: { checked: true }, - }); + await userEvent.click(screen.getByTestId('checkbox-showOnlyParticipating')); expect(updateSetting).toHaveBeenCalledTimes(1); - expect(updateSetting).toHaveBeenCalledWith('participating', false); + expect(updateSetting).toHaveBeenCalledWith('participating', true); }); it('should open official docs for showOnlyParticipating tooltip', async () => { @@ -179,9 +177,8 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { 'tooltip-showOnlyParticipating', ); - fireEvent.mouseEnter(tooltipElement); - - fireEvent.click( + await userEvent.hover(tooltipElement); + await userEvent.click( screen.getByTitle( 'Open GitHub documentation for participating and watching notifications', ), @@ -210,12 +207,10 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-markAsDoneOnOpen'), { - target: { checked: true }, - }); + await userEvent.click(screen.getByTestId('checkbox-markAsDoneOnOpen')); expect(updateSetting).toHaveBeenCalledTimes(1); - expect(updateSetting).toHaveBeenCalledWith('markAsDoneOnOpen', false); + expect(updateSetting).toHaveBeenCalledWith('markAsDoneOnOpen', true); }); it('should toggle the markAsDoneOnUnsubscribe checkbox', async () => { @@ -235,15 +230,12 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-markAsDoneOnUnsubscribe'), { - target: { checked: true }, - }); + await userEvent.click( + screen.getByTestId('checkbox-markAsDoneOnUnsubscribe'), + ); expect(updateSetting).toHaveBeenCalledTimes(1); - expect(updateSetting).toHaveBeenCalledWith( - 'markAsDoneOnUnsubscribe', - false, - ); + expect(updateSetting).toHaveBeenCalledWith('markAsDoneOnUnsubscribe', true); }); it('should toggle the delayNotificationState checkbox', async () => { @@ -263,11 +255,11 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('checkbox-delayNotificationState'), { - target: { checked: true }, - }); + await userEvent.click( + screen.getByTestId('checkbox-delayNotificationState'), + ); expect(updateSetting).toHaveBeenCalledTimes(1); - expect(updateSetting).toHaveBeenCalledWith('delayNotificationState', false); + expect(updateSetting).toHaveBeenCalledWith('delayNotificationState', true); }); }); diff --git a/src/renderer/components/settings/SettingsFooter.test.tsx b/src/renderer/components/settings/SettingsFooter.test.tsx index cf5c7fa85..f267b6738 100644 --- a/src/renderer/components/settings/SettingsFooter.test.tsx +++ b/src/renderer/components/settings/SettingsFooter.test.tsx @@ -1,5 +1,7 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAuth, mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; import * as comms from '../../utils/comms'; @@ -98,7 +100,7 @@ describe('renderer/components/settings/SettingsFooter.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('settings-release-notes')); + await userEvent.click(screen.getByTestId('settings-release-notes')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -122,7 +124,7 @@ describe('renderer/components/settings/SettingsFooter.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('settings-accounts')); + await userEvent.click(screen.getByTestId('settings-accounts')); expect(mockNavigate).toHaveBeenCalledWith('/accounts'); }); @@ -145,7 +147,7 @@ describe('renderer/components/settings/SettingsFooter.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('settings-quit')); + await userEvent.click(screen.getByTestId('settings-quit')); expect(quitAppMock).toHaveBeenCalledTimes(1); }); diff --git a/src/renderer/components/settings/SettingsReset.test.tsx b/src/renderer/components/settings/SettingsReset.test.tsx index 0293e5e38..471dacbb3 100644 --- a/src/renderer/components/settings/SettingsReset.test.tsx +++ b/src/renderer/components/settings/SettingsReset.test.tsx @@ -1,5 +1,7 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAuth, mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; import { SettingsReset } from './SettingsReset'; @@ -30,8 +32,8 @@ describe('renderer/components/settings/SettingsReset.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('settings-reset')); - fireEvent.click(screen.getByText('Reset')); + await userEvent.click(screen.getByTestId('settings-reset')); + await userEvent.click(screen.getByText('Reset')); expect(resetSettings).toHaveBeenCalled(); }); @@ -55,8 +57,8 @@ describe('renderer/components/settings/SettingsReset.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('settings-reset')); - fireEvent.click(screen.getByText('Cancel')); + await userEvent.click(screen.getByTestId('settings-reset')); + await userEvent.click(screen.getByText('Cancel')); expect(resetSettings).not.toHaveBeenCalled(); }); diff --git a/src/renderer/context/App.test.tsx b/src/renderer/context/App.test.tsx index 237117517..b9f09513f 100644 --- a/src/renderer/context/App.test.tsx +++ b/src/renderer/context/App.test.tsx @@ -1,5 +1,6 @@ import { act, fireEvent, render, waitFor } from '@testing-library/react'; import { useContext } from 'react'; + import { mockAuth, mockSettings } from '../__mocks__/state-mocks'; import { useNotifications } from '../hooks/useNotifications'; import type { AuthState, Hostname, SettingsState, Token } from '../types'; diff --git a/src/renderer/routes/Accounts.test.tsx b/src/renderer/routes/Accounts.test.tsx index e3ed4afbc..b94c1fc0a 100644 --- a/src/renderer/routes/Accounts.test.tsx +++ b/src/renderer/routes/Accounts.test.tsx @@ -1,13 +1,7 @@ -import { - act, - fireEvent, - render, - screen, - waitFor, -} from '@testing-library/react'; -import { MemoryRouter } from 'react-router-dom'; - import { BaseStyles, ThemeProvider } from '@primer/react'; +import { act, render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { MemoryRouter } from 'react-router-dom'; import { mockAuth, @@ -76,7 +70,7 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); @@ -105,7 +99,7 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-profile')); + await userEvent.click(screen.getByTestId('account-profile')); expect(openAccountProfileMock).toHaveBeenCalledTimes(1); expect(openAccountProfileMock).toHaveBeenCalledWith( @@ -135,7 +129,7 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-host')); + await userEvent.click(screen.getByTestId('account-host')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith('https://github.com'); @@ -163,7 +157,7 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-developer-settings')); + await userEvent.click(screen.getByTestId('account-developer-settings')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -202,7 +196,7 @@ describe('renderer/routes/Accounts.tsx', () => { expect(screen.getByTestId('accounts')).toMatchSnapshot(); - fireEvent.click(screen.getAllByTestId('account-missing-scopes')[0]); + await userEvent.click(screen.getAllByTestId('account-missing-scopes')[0]); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); expect(openExternalLinkMock).toHaveBeenCalledWith( @@ -238,7 +232,7 @@ describe('renderer/routes/Accounts.tsx', () => { expect(screen.getByTestId('accounts')).toMatchSnapshot(); - fireEvent.click(screen.getAllByTestId('account-set-primary')[0]); + await userEvent.click(screen.getAllByTestId('account-set-primary')[0]); expect(saveStateMock).toHaveBeenCalled(); }); @@ -263,7 +257,7 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-refresh')); + await userEvent.click(screen.getByTestId('account-refresh')); expect(apiRequestAuthMock).toHaveBeenCalledTimes(1); expect(apiRequestAuthMock).toHaveBeenCalledWith( @@ -301,10 +295,9 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-logout')); + await userEvent.click(screen.getByTestId('account-logout')); expect(logoutFromAccountMock).toHaveBeenCalledTimes(1); - expect(updateTrayIconMock).toHaveBeenCalledTimes(1); expect(updateTrayIconMock).toHaveBeenCalledWith(); expect(updateTrayTitleMock).toHaveBeenCalledTimes(1); @@ -337,8 +330,8 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-add-new')); - fireEvent.click(screen.getByTestId('account-add-github')); + await userEvent.click(screen.getByTestId('account-add-new')); + await userEvent.click(screen.getByTestId('account-add-github')); expect(mockLoginWithGitHubApp).toHaveBeenCalled(); }); @@ -363,8 +356,8 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-add-new')); - fireEvent.click(screen.getByTestId('account-add-pat')); + await userEvent.click(screen.getByTestId('account-add-new')); + await userEvent.click(screen.getByTestId('account-add-pat')); expect(mockNavigate).toHaveBeenNthCalledWith( 1, @@ -395,8 +388,8 @@ describe('renderer/routes/Accounts.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('account-add-new')); - fireEvent.click(screen.getByTestId('account-add-oauth-app')); + await userEvent.click(screen.getByTestId('account-add-new')); + await userEvent.click(screen.getByTestId('account-add-oauth-app')); expect(mockNavigate).toHaveBeenNthCalledWith(1, '/login-oauth-app', { replace: true, diff --git a/src/renderer/routes/Filters.test.tsx b/src/renderer/routes/Filters.test.tsx index 982fb9e62..25b6ba782 100644 --- a/src/renderer/routes/Filters.test.tsx +++ b/src/renderer/routes/Filters.test.tsx @@ -1,5 +1,7 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAuth, mockSettings } from '../__mocks__/state-mocks'; import { AppContext } from '../context/App'; import { FiltersRoute } from './Filters'; @@ -57,7 +59,8 @@ describe('renderer/routes/Filters.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); + expect(fetchNotifications).toHaveBeenCalledTimes(1); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); @@ -82,7 +85,7 @@ describe('renderer/routes/Filters.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('filters-clear')); + await userEvent.click(screen.getByTestId('filters-clear')); expect(clearFilters).toHaveBeenCalled(); }); diff --git a/src/renderer/routes/Login.test.tsx b/src/renderer/routes/Login.test.tsx index 5f83e6c32..ebe226cde 100644 --- a/src/renderer/routes/Login.test.tsx +++ b/src/renderer/routes/Login.test.tsx @@ -1,5 +1,7 @@ -import { fireEvent, render, screen } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { AppContext } from '../context/App'; import * as comms from '../utils/comms'; import { LoginRoute } from './Login'; @@ -48,7 +50,7 @@ describe('renderer/routes/Login.tsx', () => { expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true }); }); - it('should login with github', () => { + it('should login with github', async () => { const mockLoginWithGitHubApp = jest.fn(); render( { , ); - fireEvent.click(screen.getByTestId('login-github')); + await userEvent.click(screen.getByTestId('login-github')); expect(mockLoginWithGitHubApp).toHaveBeenCalled(); }); - it('should navigate to login with personal access token', () => { + it('should navigate to login with personal access token', async () => { render( , ); - fireEvent.click(screen.getByTestId('login-pat')); + await userEvent.click(screen.getByTestId('login-pat')); expect(mockNavigate).toHaveBeenNthCalledWith( 1, @@ -83,14 +85,14 @@ describe('renderer/routes/Login.tsx', () => { ); }); - it('should navigate to login with oauth app', () => { + it('should navigate to login with oauth app', async () => { render( , ); - fireEvent.click(screen.getByTestId('login-oauth-app')); + await userEvent.click(screen.getByTestId('login-oauth-app')); expect(mockNavigate).toHaveBeenNthCalledWith(1, '/login-oauth-app'); }); diff --git a/src/renderer/routes/LoginWithOAuthApp.test.tsx b/src/renderer/routes/LoginWithOAuthApp.test.tsx index b1d79e982..598e8821c 100644 --- a/src/renderer/routes/LoginWithOAuthApp.test.tsx +++ b/src/renderer/routes/LoginWithOAuthApp.test.tsx @@ -1,5 +1,7 @@ -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { AppContext } from '../context/App'; import type { AuthState, ClientID, ClientSecret, Hostname } from '../types'; import * as comms from '../utils/comms'; @@ -38,7 +40,7 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { expect(tree).toMatchSnapshot(); }); - it('let us go back', () => { + it('let us go back', async () => { render( @@ -47,7 +49,7 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { , ); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); @@ -89,11 +91,9 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: '' }, - }); + await userEvent.clear(screen.getByTestId('login-hostname')); - fireEvent.click(screen.getByTestId('login-create-oauth-app')); + await userEvent.click(screen.getByTestId('login-create-oauth-app')); expect(openExternalLinkMock).toHaveBeenCalledTimes(0); }); @@ -107,11 +107,11 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: 'company.github.com' }, - }); + const hostname = screen.getByTestId('login-hostname'); + await userEvent.clear(hostname); + await userEvent.type(hostname, 'company.github.com'); - fireEvent.click(screen.getByTestId('login-create-oauth-app')); + await userEvent.click(screen.getByTestId('login-create-oauth-app')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); }); @@ -132,25 +132,27 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: 'github.com' }, - }); - fireEvent.change(screen.getByTestId('login-clientId'), { - target: { value: '1234567890_ASDFGHJKL' }, - }); - fireEvent.change(screen.getByTestId('login-clientSecret'), { - target: { value: '1234567890_asdfghjklPOIUYTREWQ0987654321' }, - }); + const hostname = screen.getByTestId('login-hostname'); + await userEvent.clear(hostname); + await userEvent.type(hostname, 'github.com'); + + await userEvent.type( + screen.getByTestId('login-clientId'), + '1234567890_ASDFGHJKL', + ); - fireEvent.click(screen.getByTestId('login-submit')); + await userEvent.type( + screen.getByTestId('login-clientSecret'), + '1234567890_asdfghjklPOIUYTREWQ0987654321', + ); - await waitFor(() => expect(mockLoginWithOAuthApp).toHaveBeenCalledTimes(1)); + await userEvent.click(screen.getByTestId('login-submit')); expect(mockLoginWithOAuthApp).toHaveBeenCalledTimes(1); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); - it('should render the form with errors', () => { + it('should render the form with errors', async () => { render( @@ -159,22 +161,22 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: 'test' }, - }); - fireEvent.change(screen.getByTestId('login-clientId'), { - target: { value: '123' }, - }); - fireEvent.change(screen.getByTestId('login-clientSecret'), { - target: { value: 'abc' }, - }); + const hostname = screen.getByTestId('login-hostname'); + await userEvent.clear(hostname); + await userEvent.type(hostname, 'test'); + + await userEvent.type(screen.getByTestId('login-clientId'), '123'); + + await userEvent.type(screen.getByTestId('login-clientSecret'), 'abc'); - fireEvent.click(screen.getByTestId('login-submit')); + await userEvent.click(screen.getByTestId('login-submit')); - expect(screen.getByTestId('login-errors')).toBeTruthy(); - expect(screen.getByText('Hostname format is invalid')).toBeTruthy(); - expect(screen.getByText('Client ID format is invalid')).toBeTruthy(); - expect(screen.getByText('Client Secret format is invalid')).toBeTruthy(); + expect(screen.getByTestId('login-errors')).toBeInTheDocument(); + expect(screen.getByText('Hostname format is invalid')).toBeInTheDocument(); + expect(screen.getByText('Client ID format is invalid')).toBeInTheDocument(); + expect( + screen.getByText('Client Secret format is invalid'), + ).toBeInTheDocument(); }); it('should open help docs in the browser', async () => { @@ -186,7 +188,7 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => { , ); - fireEvent.click(screen.getByTestId('login-docs')); + await userEvent.click(screen.getByTestId('login-docs')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); }); diff --git a/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx b/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx index a797413f8..59c54093c 100644 --- a/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx +++ b/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx @@ -1,5 +1,7 @@ -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { AppContext } from '../context/App'; import * as comms from '../utils/comms'; import { @@ -33,14 +35,14 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { expect(tree).toMatchSnapshot(); }); - it('let us go back', () => { + it('let us go back', async () => { render( , ); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); @@ -80,11 +82,9 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: '' }, - }); + await userEvent.clear(screen.getByTestId('login-hostname')); - fireEvent.click(screen.getByTestId('login-create-token')); + await userEvent.click(screen.getByTestId('login-create-token')); expect(openExternalLinkMock).toHaveBeenCalledTimes(0); }); @@ -102,7 +102,7 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { , ); - fireEvent.click(screen.getByTestId('login-create-token')); + await userEvent.click(screen.getByTestId('login-create-token')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); }); @@ -123,15 +123,16 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: 'github.com' }, - }); + const hostname = screen.getByTestId('login-hostname'); + await userEvent.clear(hostname); + await userEvent.type(hostname, 'github.com'); - fireEvent.change(screen.getByTestId('login-token'), { - target: { value: '1234567890123456789012345678901234567890' }, - }); + await userEvent.type( + screen.getByTestId('login-token'), + '1234567890123456789012345678901234567890', + ); - fireEvent.click(screen.getByTestId('login-submit')); + await userEvent.click(screen.getByTestId('login-submit')); await waitFor(() => expect(mockLoginWithPersonalAccessToken).toHaveBeenCalledTimes(1), @@ -156,15 +157,16 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: 'github.com' }, - }); + const hostname = screen.getByTestId('login-hostname'); + await userEvent.clear(hostname); + await userEvent.type(hostname, 'github.com'); - fireEvent.change(screen.getByTestId('login-token'), { - target: { value: '1234567890123456789012345678901234567890' }, - }); + await userEvent.type( + screen.getByTestId('login-token'), + '1234567890123456789012345678901234567890', + ); - fireEvent.click(screen.getByTestId('login-submit')); + await userEvent.click(screen.getByTestId('login-submit')); await waitFor(() => expect(mockLoginWithPersonalAccessToken).toHaveBeenCalledTimes(1), @@ -174,25 +176,24 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { expect(mockNavigate).toHaveBeenCalledTimes(0); }); - it('should render the form with errors', () => { + it('should render the form with errors', async () => { render( , ); - fireEvent.change(screen.getByTestId('login-hostname'), { - target: { value: 'test' }, - }); - fireEvent.change(screen.getByTestId('login-token'), { - target: { value: '123' }, - }); + const hostname = screen.getByTestId('login-hostname'); + await userEvent.clear(hostname); + await userEvent.type(hostname, 'test'); + + await userEvent.type(screen.getByTestId('login-token'), '123'); - fireEvent.click(screen.getByTestId('login-submit')); + await userEvent.click(screen.getByTestId('login-submit')); - expect(screen.getByTestId('login-errors')).toBeTruthy(); - expect(screen.getByText('Hostname format is invalid')).toBeTruthy(); - expect(screen.getByText('Token format is invalid')).toBeTruthy(); + expect(screen.getByTestId('login-errors')).toBeInTheDocument(); + expect(screen.getByText('Hostname format is invalid')).toBeInTheDocument(); + expect(screen.getByText('Token format is invalid')).toBeInTheDocument(); }); it('should open help docs in the browser', async () => { @@ -208,7 +209,7 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => { , ); - fireEvent.click(screen.getByTestId('login-docs')); + await userEvent.click(screen.getByTestId('login-docs')); expect(openExternalLinkMock).toHaveBeenCalledTimes(1); }); diff --git a/src/renderer/routes/Notifications.test.tsx b/src/renderer/routes/Notifications.test.tsx index f18b7c416..0c5f83e65 100644 --- a/src/renderer/routes/Notifications.test.tsx +++ b/src/renderer/routes/Notifications.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react'; + import { mockAccountNotifications } from '../__mocks__/notifications-mocks'; import { mockSettings } from '../__mocks__/state-mocks'; import { AppContext } from '../context/App'; diff --git a/src/renderer/routes/Settings.test.tsx b/src/renderer/routes/Settings.test.tsx index 6cbe069d3..cbba9861d 100644 --- a/src/renderer/routes/Settings.test.tsx +++ b/src/renderer/routes/Settings.test.tsx @@ -1,5 +1,7 @@ -import { act, fireEvent, render, screen } from '@testing-library/react'; +import { act, render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; + import { mockAuth, mockSettings } from '../__mocks__/state-mocks'; import { AppContext } from '../context/App'; import { SettingsRoute } from './Settings'; @@ -48,7 +50,8 @@ describe('renderer/routes/Settings.tsx', () => { ); }); - fireEvent.click(screen.getByTestId('header-nav-back')); + await userEvent.click(screen.getByTestId('header-nav-back')); + expect(fetchNotifications).toHaveBeenCalledTimes(1); expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); }); diff --git a/src/renderer/utils/api/client.test.ts b/src/renderer/utils/api/client.test.ts index f7b9acbd2..0edf752db 100644 --- a/src/renderer/utils/api/client.test.ts +++ b/src/renderer/utils/api/client.test.ts @@ -1,4 +1,5 @@ import axios, { type AxiosPromise, type AxiosResponse } from 'axios'; + import * as logger from '../../../shared/logger'; import { mockGitHubCloudAccount, diff --git a/src/renderer/utils/api/errors.test.ts b/src/renderer/utils/api/errors.test.ts index 321003ffc..da440b18e 100644 --- a/src/renderer/utils/api/errors.test.ts +++ b/src/renderer/utils/api/errors.test.ts @@ -1,4 +1,5 @@ import { AxiosError, type AxiosResponse } from 'axios'; + import type { Link } from '../../types'; import type { GitHubRESTError } from '../../typesGitHub'; import { Errors } from '../errors'; diff --git a/src/renderer/utils/api/request.test.ts b/src/renderer/utils/api/request.test.ts index 13cca1661..fcc1785f9 100644 --- a/src/renderer/utils/api/request.test.ts +++ b/src/renderer/utils/api/request.test.ts @@ -1,4 +1,5 @@ import axios from 'axios'; + import type { Link, Token } from '../../types'; import { apiRequest, apiRequestAuth } from './request'; diff --git a/src/renderer/utils/api/utils.test.ts b/src/renderer/utils/api/utils.test.ts index 1c4df5505..9435c95cc 100644 --- a/src/renderer/utils/api/utils.test.ts +++ b/src/renderer/utils/api/utils.test.ts @@ -1,4 +1,5 @@ import type { AxiosResponse } from 'axios'; + import type { Hostname } from '../../types'; import { getGitHubAPIBaseUrl, diff --git a/src/renderer/utils/auth/utils.test.ts b/src/renderer/utils/auth/utils.test.ts index 9e38b5ff6..276e7d89f 100644 --- a/src/renderer/utils/auth/utils.test.ts +++ b/src/renderer/utils/auth/utils.test.ts @@ -2,6 +2,7 @@ import axios from 'axios'; import type { AxiosPromise, AxiosResponse } from 'axios'; import { ipcRenderer } from 'electron'; import nock from 'nock'; + import { mockAuth, mockGitHubCloudAccount, diff --git a/src/renderer/utils/helpers.test.ts b/src/renderer/utils/helpers.test.ts index ffaa1e939..77c702927 100644 --- a/src/renderer/utils/helpers.test.ts +++ b/src/renderer/utils/helpers.test.ts @@ -1,13 +1,12 @@ -import type { AxiosPromise, AxiosResponse } from 'axios'; -import { mockPersonalAccessTokenAccount } from '../__mocks__/state-mocks'; - import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, } from '@primer/octicons-react'; +import type { AxiosPromise, AxiosResponse } from 'axios'; import * as logger from '../../shared/logger'; +import { mockPersonalAccessTokenAccount } from '../__mocks__/state-mocks'; import type { Hostname, Link } from '../types'; import type { SubjectType } from '../typesGitHub'; import { diff --git a/src/renderer/utils/icons.test.ts b/src/renderer/utils/icons.test.ts index c037d27f5..12a57331a 100644 --- a/src/renderer/utils/icons.test.ts +++ b/src/renderer/utils/icons.test.ts @@ -6,6 +6,7 @@ import { MarkGithubIcon, OrganizationIcon, } from '@primer/octicons-react'; + import { IconColor } from '../types'; import type { GitifyPullRequestReview,