diff --git a/src/renderer/__mocks__/notifications-mocks.ts b/src/renderer/__mocks__/notifications-mocks.ts index ff054f98a..338731d4e 100644 --- a/src/renderer/__mocks__/notifications-mocks.ts +++ b/src/renderer/__mocks__/notifications-mocks.ts @@ -2,12 +2,10 @@ import { Constants } from '../constants'; import type { AccountNotifications, GitifyNotification, - GitifyNotificationState, GitifyRepository, GitifySubject, Hostname, Link, - SubjectType, } from '../types'; import { mockEnterpriseNotifications, @@ -42,20 +40,6 @@ export const mockSingleAccountNotifications: AccountNotifications[] = [ }, ]; -export function createMockSubject(mocks: { - title?: string; - type?: SubjectType; - state?: GitifyNotificationState; -}): GitifySubject { - return { - title: mocks.title ?? 'Mock Subject', - type: mocks.type ?? ('Unknown' as SubjectType), - state: mocks.state ?? ('Unknown' as GitifyNotificationState), - url: null, - latestCommentUrl: null, - }; -} - export function createPartialMockNotification( subject: Partial, repository?: Partial, diff --git a/src/renderer/components/notifications/NotificationRow.tsx b/src/renderer/components/notifications/NotificationRow.tsx index c158689c6..088e6b26f 100644 --- a/src/renderer/components/notifications/NotificationRow.tsx +++ b/src/renderer/components/notifications/NotificationRow.tsx @@ -62,8 +62,8 @@ export const NotificationRow: FC = ({ }; const handler = createNotificationHandler(notification); - const NotificationIcon = handler.iconType(notification.subject); - const iconColor = handler.iconColor(notification.subject); + const NotificationIcon = handler.iconType(notification); + const iconColor = handler.iconColor(notification); const notificationType = handler.formattedNotificationType(notification); const notificationNumber = handler.formattedNotificationNumber(notification); const notificationTitle = handler.formattedNotificationTitle(notification); diff --git a/src/renderer/utils/notifications/handlers/checkSuite.test.ts b/src/renderer/utils/notifications/handlers/checkSuite.test.ts index 5d44f7d4e..1a75b377a 100644 --- a/src/renderer/utils/notifications/handlers/checkSuite.test.ts +++ b/src/renderer/utils/notifications/handlers/checkSuite.test.ts @@ -1,7 +1,4 @@ -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import type { GitifyNotification } from '../../../types'; import { @@ -178,11 +175,14 @@ describe('renderer/utils/notifications/handlers/checkSuite.ts', () => { it.each( Object.entries(cases) as Array<[GitifyCheckSuiteStatus, IconColor]>, )('iconType for check suite with status %s', (checkSuiteStatus, checkSuiteIconType) => { - expect( - checkSuiteHandler.iconType( - createMockSubject({ type: 'CheckSuite', state: checkSuiteStatus }), - ).displayName, - ).toBe(checkSuiteIconType); + const mockNotification = createPartialMockNotification({ + type: 'CheckSuite', + state: checkSuiteStatus, + }); + + expect(checkSuiteHandler.iconType(mockNotification).displayName).toBe( + checkSuiteIconType, + ); }); }); @@ -206,11 +206,14 @@ describe('renderer/utils/notifications/handlers/checkSuite.ts', () => { it.each( Object.entries(cases) as Array<[GitifyCheckSuiteStatus, IconColor]>, )('iconColor for check suite with status %s', (checkSuiteStatus, checkSuiteIconColor) => { - expect( - checkSuiteHandler.iconColor( - createMockSubject({ type: 'CheckSuite', state: checkSuiteStatus }), - ), - ).toBe(checkSuiteIconColor); + const mockNotification = createPartialMockNotification({ + type: 'CheckSuite', + state: checkSuiteStatus, + }); + + expect(checkSuiteHandler.iconColor(mockNotification)).toBe( + checkSuiteIconColor, + ); }); }); diff --git a/src/renderer/utils/notifications/handlers/checkSuite.ts b/src/renderer/utils/notifications/handlers/checkSuite.ts index a8a6257e2..b28810f8b 100644 --- a/src/renderer/utils/notifications/handlers/checkSuite.ts +++ b/src/renderer/utils/notifications/handlers/checkSuite.ts @@ -48,8 +48,8 @@ class CheckSuiteHandler extends DefaultHandler { return {}; } - iconType(subject: GitifySubject): FC | null { - switch (subject.state as GitifyCheckSuiteStatus) { + iconType(notification: GitifyNotification): FC { + switch (notification.subject.state as GitifyCheckSuiteStatus) { case 'CANCELLED': return StopIcon; case 'FAILURE': @@ -63,14 +63,14 @@ class CheckSuiteHandler extends DefaultHandler { } } - iconColor(subject: GitifySubject): IconColor { - switch (subject.state as GitifyCheckSuiteStatus) { + iconColor(notification: GitifyNotification): IconColor { + switch (notification.subject.state as GitifyCheckSuiteStatus) { case 'SUCCESS': return IconColor.GREEN; case 'FAILURE': return IconColor.RED; default: - return defaultHandler.iconColor(subject); + return defaultHandler.iconColor(notification); } } diff --git a/src/renderer/utils/notifications/handlers/commit.test.ts b/src/renderer/utils/notifications/handlers/commit.test.ts index 66978d7d8..35d58aff7 100644 --- a/src/renderer/utils/notifications/handlers/commit.test.ts +++ b/src/renderer/utils/notifications/handlers/commit.test.ts @@ -1,10 +1,7 @@ import axios from 'axios'; import nock from 'nock'; -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import { createPartialMockUser } from '../../../__mocks__/user-mocks'; import type { GitifyNotification, Link } from '../../../types'; @@ -99,9 +96,13 @@ describe('renderer/utils/notifications/handlers/commit.ts', () => { }); it('iconType', () => { - expect( - commitHandler.iconType(createMockSubject({ type: 'Commit' })).displayName, - ).toBe('GitCommitIcon'); + const mockNotification = createPartialMockNotification({ + type: 'Commit', + }); + + expect(commitHandler.iconType(mockNotification).displayName).toBe( + 'GitCommitIcon', + ); }); it('defaultUrl', () => { diff --git a/src/renderer/utils/notifications/handlers/commit.ts b/src/renderer/utils/notifications/handlers/commit.ts index b60432171..c0b8fbbd3 100644 --- a/src/renderer/utils/notifications/handlers/commit.ts +++ b/src/renderer/utils/notifications/handlers/commit.ts @@ -65,7 +65,7 @@ class CommitHandler extends DefaultHandler { }; } - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return GitCommitIcon; } } diff --git a/src/renderer/utils/notifications/handlers/default.test.ts b/src/renderer/utils/notifications/handlers/default.test.ts index 62fa8adcc..5d79e0030 100644 --- a/src/renderer/utils/notifications/handlers/default.test.ts +++ b/src/renderer/utils/notifications/handlers/default.test.ts @@ -1,7 +1,4 @@ -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import type { GitifyNotification } from '../../../types'; import { @@ -37,13 +34,15 @@ describe('renderer/utils/notifications/handlers/default.ts', () => { }); it('iconType', () => { - expect(defaultHandler.iconType(createMockSubject({})).displayName).toBe( + const mockNotification = createPartialMockNotification({}); + + expect(defaultHandler.iconType(mockNotification).displayName).toBe( 'QuestionIcon', ); }); describe('iconColor', () => { - it('returns GRAY for any state (fallback behavior)', () => { + it('returns GRAY for any unrecognized state (fallback behavior)', () => { const states: Array = [ 'unknown' as GitifyNotificationState, null, @@ -51,8 +50,11 @@ describe('renderer/utils/notifications/handlers/default.ts', () => { ]; states.forEach((state) => { - const subject = createMockSubject({ state }); - expect(defaultHandler.iconColor(subject)).toBe(IconColor.GRAY); + const mockNotification = createPartialMockNotification({ + state: state, + }); + + expect(defaultHandler.iconColor(mockNotification)).toBe(IconColor.GRAY); }); }); }); diff --git a/src/renderer/utils/notifications/handlers/default.ts b/src/renderer/utils/notifications/handlers/default.ts index ce978a7f5..1cb615390 100644 --- a/src/renderer/utils/notifications/handlers/default.ts +++ b/src/renderer/utils/notifications/handlers/default.ts @@ -26,11 +26,11 @@ export class DefaultHandler implements NotificationTypeHandler { return {}; } - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return QuestionIcon; } - iconColor(_subject: GitifySubject): IconColor { + iconColor(_notification: GitifyNotification): IconColor { return IconColor.GRAY; } diff --git a/src/renderer/utils/notifications/handlers/discussion.test.ts b/src/renderer/utils/notifications/handlers/discussion.test.ts index b004ab456..1a3a71dbf 100644 --- a/src/renderer/utils/notifications/handlers/discussion.test.ts +++ b/src/renderer/utils/notifications/handlers/discussion.test.ts @@ -1,10 +1,7 @@ import axios from 'axios'; import nock from 'nock'; -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import { createMockGraphQLAuthor } from '../../../__mocks__/user-mocks'; import type { GitifyNotification } from '../../../types'; @@ -308,11 +305,14 @@ describe('renderer/utils/notifications/handlers/discussion.ts', () => { it.each( Object.entries(cases) as Array<[GitifyDiscussionState, IconColor]>, )('iconType for discussion with state %s', (discussionState, discussionIconType) => { - expect( - discussionHandler.iconType( - createMockSubject({ type: 'Discussion', state: discussionState }), - ).displayName, - ).toBe(discussionIconType); + const mockNotification = createPartialMockNotification({ + type: 'Discussion', + state: discussionState, + }); + + expect(discussionHandler.iconType(mockNotification).displayName).toBe( + discussionIconType, + ); }); }); @@ -329,11 +329,14 @@ describe('renderer/utils/notifications/handlers/discussion.ts', () => { it.each( Object.entries(cases) as Array<[GitifyDiscussionState, IconColor]>, )('iconColor for discussion with state %s', (discussionState, discussionIconColor) => { - expect( - discussionHandler.iconColor( - createMockSubject({ type: 'Discussion', state: discussionState }), - ), - ).toBe(discussionIconColor); + const mockNotification = createPartialMockNotification({ + type: 'Discussion', + state: discussionState, + }); + + expect(discussionHandler.iconColor(mockNotification)).toBe( + discussionIconColor, + ); }); }); diff --git a/src/renderer/utils/notifications/handlers/discussion.ts b/src/renderer/utils/notifications/handlers/discussion.ts index 4ff2f8c92..8a8f6b4d2 100644 --- a/src/renderer/utils/notifications/handlers/discussion.ts +++ b/src/renderer/utils/notifications/handlers/discussion.ts @@ -69,8 +69,8 @@ class DiscussionHandler extends DefaultHandler { }; } - iconType(subject: GitifySubject): FC | null { - switch (subject.state as GitifyDiscussionState) { + iconType(notification: GitifyNotification): FC { + switch (notification.subject.state as GitifyDiscussionState) { case 'DUPLICATE': return DiscussionDuplicateIcon; case 'OUTDATED': @@ -82,14 +82,14 @@ class DiscussionHandler extends DefaultHandler { } } - iconColor(subject: GitifySubject): IconColor { - switch (subject.state) { + iconColor(notification: GitifyNotification): IconColor { + switch (notification.subject.state) { case 'ANSWERED': return IconColor.GREEN; case 'RESOLVED': return IconColor.PURPLE; default: - return defaultHandler.iconColor(subject); + return defaultHandler.iconColor(notification); } } diff --git a/src/renderer/utils/notifications/handlers/issue.test.ts b/src/renderer/utils/notifications/handlers/issue.test.ts index 3360b0e56..8416e28da 100644 --- a/src/renderer/utils/notifications/handlers/issue.test.ts +++ b/src/renderer/utils/notifications/handlers/issue.test.ts @@ -1,10 +1,7 @@ import axios from 'axios'; import nock from 'nock'; -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import { createMockGraphQLAuthor } from '../../../__mocks__/user-mocks'; import type { GitifyNotification } from '../../../types'; @@ -248,11 +245,14 @@ describe('renderer/utils/notifications/handlers/issue.ts', () => { it.each( Object.entries(cases) as Array<[GitifyIssueState, IconColor]>, )('iconType for issue with state %s', (issueState, issueIconType) => { - expect( - issueHandler.iconType( - createMockSubject({ type: 'Issue', state: issueState }), - ).displayName, - ).toBe(issueIconType); + const mockNotification = createPartialMockNotification({ + type: 'Issue', + state: issueState, + }); + + expect(issueHandler.iconType(mockNotification).displayName).toBe( + issueIconType, + ); }); }); @@ -269,11 +269,12 @@ describe('renderer/utils/notifications/handlers/issue.ts', () => { it.each( Object.entries(cases) as Array<[GitifyIssueState, IconColor]>, )('iconColor for issue with state %s', (issueState, issueIconColor) => { - expect( - issueHandler.iconColor( - createMockSubject({ type: 'Issue', state: issueState }), - ), - ).toBe(issueIconColor); + const mockNotification = createPartialMockNotification({ + type: 'Issue', + state: issueState, + }); + + expect(issueHandler.iconColor(mockNotification)).toBe(issueIconColor); }); }); diff --git a/src/renderer/utils/notifications/handlers/issue.ts b/src/renderer/utils/notifications/handlers/issue.ts index 452bf6e41..d79164b79 100644 --- a/src/renderer/utils/notifications/handlers/issue.ts +++ b/src/renderer/utils/notifications/handlers/issue.ts @@ -55,8 +55,8 @@ class IssueHandler extends DefaultHandler { }; } - iconType(subject: GitifySubject): FC | null { - switch (subject.state as GitifyIssueState) { + iconType(notification: GitifyNotification): FC { + switch (notification.subject.state as GitifyIssueState) { case 'CLOSED': case 'COMPLETED': return IssueClosedIcon; @@ -70,8 +70,8 @@ class IssueHandler extends DefaultHandler { } } - iconColor(subject: GitifySubject): IconColor { - switch (subject.state as GitifyIssueState) { + iconColor(notification: GitifyNotification): IconColor { + switch (notification.subject.state as GitifyIssueState) { case 'OPEN': case 'REOPENED': return IconColor.GREEN; @@ -80,7 +80,7 @@ class IssueHandler extends DefaultHandler { case 'COMPLETED': return IconColor.PURPLE; default: - return defaultHandler.iconColor(subject); + return defaultHandler.iconColor(notification); } } diff --git a/src/renderer/utils/notifications/handlers/pullRequest.test.ts b/src/renderer/utils/notifications/handlers/pullRequest.test.ts index 908ea6dcb..ec6ad23f4 100644 --- a/src/renderer/utils/notifications/handlers/pullRequest.test.ts +++ b/src/renderer/utils/notifications/handlers/pullRequest.test.ts @@ -1,10 +1,7 @@ import axios from 'axios'; import nock from 'nock'; -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import { createMockGraphQLAuthor } from '../../../__mocks__/user-mocks'; import type { GitifyNotification } from '../../../types'; @@ -401,11 +398,14 @@ describe('renderer/utils/notifications/handlers/pullRequest.ts', () => { it.each( Object.entries(cases) as Array<[GitifyPullRequestState, IconColor]>, )('iconType for pull request with state %s', (pullRequestState, pullRequestIconType) => { - expect( - pullRequestHandler.iconType( - createMockSubject({ type: 'PullRequest', state: pullRequestState }), - ).displayName, - ).toBe(pullRequestIconType); + const mockNotification = createPartialMockNotification({ + type: 'PullRequest', + state: pullRequestState, + }); + + expect(pullRequestHandler.iconType(mockNotification).displayName).toBe( + pullRequestIconType, + ); }); }); @@ -421,11 +421,14 @@ describe('renderer/utils/notifications/handlers/pullRequest.ts', () => { it.each( Object.entries(cases) as Array<[GitifyPullRequestState, IconColor]>, )('iconType for pull request with state %s', (pullRequestState, pullRequestIconColor) => { - expect( - pullRequestHandler.iconColor( - createMockSubject({ type: 'PullRequest', state: pullRequestState }), - ), - ).toBe(pullRequestIconColor); + const mockNotification = createPartialMockNotification({ + type: 'PullRequest', + state: pullRequestState, + }); + + expect(pullRequestHandler.iconColor(mockNotification)).toBe( + pullRequestIconColor, + ); }); }); diff --git a/src/renderer/utils/notifications/handlers/pullRequest.ts b/src/renderer/utils/notifications/handlers/pullRequest.ts index e1245039f..407fc6172 100644 --- a/src/renderer/utils/notifications/handlers/pullRequest.ts +++ b/src/renderer/utils/notifications/handlers/pullRequest.ts @@ -68,8 +68,8 @@ class PullRequestHandler extends DefaultHandler { }; } - iconType(subject: GitifySubject): FC | null { - switch (subject.state as GitifyPullRequestState) { + iconType(notification: GitifyNotification): FC { + switch (notification.subject.state as GitifyPullRequestState) { case 'DRAFT': return GitPullRequestDraftIcon; case 'CLOSED': @@ -83,8 +83,8 @@ class PullRequestHandler extends DefaultHandler { } } - iconColor(subject: GitifySubject): IconColor { - switch (subject.state as GitifyPullRequestState) { + iconColor(notification: GitifyNotification): IconColor { + switch (notification.subject.state as GitifyPullRequestState) { case 'OPEN': return IconColor.GREEN; case 'CLOSED': @@ -94,7 +94,7 @@ class PullRequestHandler extends DefaultHandler { case 'MERGED': return IconColor.PURPLE; default: - return defaultHandler.iconColor(subject); + return defaultHandler.iconColor(notification); } } diff --git a/src/renderer/utils/notifications/handlers/release.test.ts b/src/renderer/utils/notifications/handlers/release.test.ts index 26e1905e7..192a3d473 100644 --- a/src/renderer/utils/notifications/handlers/release.test.ts +++ b/src/renderer/utils/notifications/handlers/release.test.ts @@ -1,10 +1,7 @@ import axios from 'axios'; import nock from 'nock'; -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import { createPartialMockUser } from '../../../__mocks__/user-mocks'; import type { GitifyNotification, Link } from '../../../types'; @@ -69,13 +66,13 @@ describe('renderer/utils/notifications/handlers/release.ts', () => { }); it('iconType', () => { - expect( - releaseHandler.iconType( - createMockSubject({ - type: 'Release', - }), - ).displayName, - ).toBe('TagIcon'); + const mockNotification = createPartialMockNotification({ + type: 'Release', + }); + + expect(releaseHandler.iconType(mockNotification).displayName).toBe( + 'TagIcon', + ); }); it('defaultUrl', () => { diff --git a/src/renderer/utils/notifications/handlers/release.ts b/src/renderer/utils/notifications/handlers/release.ts index d42650eee..b3bdae4af 100644 --- a/src/renderer/utils/notifications/handlers/release.ts +++ b/src/renderer/utils/notifications/handlers/release.ts @@ -49,7 +49,7 @@ class ReleaseHandler extends DefaultHandler { }; } - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return TagIcon; } diff --git a/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.test.ts b/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.test.ts index 985d8aed1..a09e43f9d 100644 --- a/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.test.ts +++ b/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.test.ts @@ -1,15 +1,16 @@ -import { createMockSubject } from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import type { GitifyNotification, Link } from '../../../types'; import { repositoryDependabotAlertsThreadHandler } from './repositoryDependabotAlertsThread'; describe('renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.ts', () => { it('iconType', () => { + const mockNotification = createPartialMockNotification({ + type: 'RepositoryDependabotAlertsThread', + }); + expect( - repositoryDependabotAlertsThreadHandler.iconType( - createMockSubject({ - type: 'RepositoryDependabotAlertsThread', - }), - ).displayName, + repositoryDependabotAlertsThreadHandler.iconType(mockNotification) + .displayName, ).toBe('AlertIcon'); }); diff --git a/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.ts b/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.ts index affe9f48c..6457acb3b 100644 --- a/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.ts +++ b/src/renderer/utils/notifications/handlers/repositoryDependabotAlertsThread.ts @@ -3,13 +3,13 @@ import type { FC } from 'react'; import type { OcticonProps } from '@primer/octicons-react'; import { AlertIcon } from '@primer/octicons-react'; -import type { GitifyNotification, GitifySubject, Link } from '../../../types'; +import type { GitifyNotification, Link } from '../../../types'; import { DefaultHandler, defaultHandler } from './default'; class RepositoryDependabotAlertsThreadHandler extends DefaultHandler { readonly type = 'RepositoryDependabotAlertsThread'; - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return AlertIcon; } diff --git a/src/renderer/utils/notifications/handlers/repositoryInvitation.test.ts b/src/renderer/utils/notifications/handlers/repositoryInvitation.test.ts index 1d685cebd..d2aa64a6e 100644 --- a/src/renderer/utils/notifications/handlers/repositoryInvitation.test.ts +++ b/src/renderer/utils/notifications/handlers/repositoryInvitation.test.ts @@ -1,15 +1,15 @@ -import { createMockSubject } from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import type { GitifyNotification, Link } from '../../../types'; import { repositoryInvitationHandler } from './repositoryInvitation'; describe('renderer/utils/notifications/handlers/repositoryInvitation.ts', () => { it('iconType', () => { + const mockNotification = createPartialMockNotification({ + type: 'RepositoryInvitation', + }); + expect( - repositoryInvitationHandler.iconType( - createMockSubject({ - type: 'RepositoryInvitation', - }), - ).displayName, + repositoryInvitationHandler.iconType(mockNotification).displayName, ).toBe('MailIcon'); }); diff --git a/src/renderer/utils/notifications/handlers/repositoryInvitation.ts b/src/renderer/utils/notifications/handlers/repositoryInvitation.ts index 73b5291c0..db25874c8 100644 --- a/src/renderer/utils/notifications/handlers/repositoryInvitation.ts +++ b/src/renderer/utils/notifications/handlers/repositoryInvitation.ts @@ -2,13 +2,13 @@ import type { FC } from 'react'; import { MailIcon, type OcticonProps } from '@primer/octicons-react'; -import type { GitifyNotification, GitifySubject, Link } from '../../../types'; +import type { GitifyNotification, Link } from '../../../types'; import { DefaultHandler, defaultHandler } from './default'; class RepositoryInvitationHandler extends DefaultHandler { readonly type = 'RepositoryInvitation'; - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return MailIcon; } diff --git a/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.test.ts b/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.test.ts index 12070b027..ee685c341 100644 --- a/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.test.ts +++ b/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.test.ts @@ -1,15 +1,16 @@ -import { createMockSubject } from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import type { GitifyNotification, Link } from '../../../types'; import { repositoryVulnerabilityAlertHandler } from './repositoryVulnerabilityAlert'; describe('renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.ts', () => { it('iconType', () => { + const mockNotification = createPartialMockNotification({ + type: 'RepositoryVulnerabilityAlert', + }); + expect( - repositoryVulnerabilityAlertHandler.iconType( - createMockSubject({ - type: 'RepositoryVulnerabilityAlert', - }), - ).displayName, + repositoryVulnerabilityAlertHandler.iconType(mockNotification) + .displayName, ).toBe('AlertIcon'); }); diff --git a/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.ts b/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.ts index 6d1011a09..c868f92ea 100644 --- a/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.ts +++ b/src/renderer/utils/notifications/handlers/repositoryVulnerabilityAlert.ts @@ -2,13 +2,13 @@ import type { FC } from 'react'; import { AlertIcon, type OcticonProps } from '@primer/octicons-react'; -import type { GitifySubject } from '../../../types'; +import type { GitifyNotification } from '../../../types'; import { DefaultHandler } from './default'; class RepositoryVulnerabilityAlertHandler extends DefaultHandler { readonly type = 'RepositoryVulnerabilityAlert'; - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return AlertIcon; } } diff --git a/src/renderer/utils/notifications/handlers/types.ts b/src/renderer/utils/notifications/handlers/types.ts index 4a705255d..96d6e17b0 100644 --- a/src/renderer/utils/notifications/handlers/types.ts +++ b/src/renderer/utils/notifications/handlers/types.ts @@ -34,12 +34,12 @@ export interface NotificationTypeHandler { /** * Return the icon component for this notification type. */ - iconType(subject: GitifySubject): FC | null; + iconType(notification: GitifyNotification): FC; /** * Return the icon color for this notification type. */ - iconColor(subject: GitifySubject): string | undefined; + iconColor(notification: GitifyNotification): string; /** * Return the formatted notification type for this notification. diff --git a/src/renderer/utils/notifications/handlers/workflowRun.test.ts b/src/renderer/utils/notifications/handlers/workflowRun.test.ts index 77871cb21..f90dbe4a3 100644 --- a/src/renderer/utils/notifications/handlers/workflowRun.test.ts +++ b/src/renderer/utils/notifications/handlers/workflowRun.test.ts @@ -1,7 +1,4 @@ -import { - createMockSubject, - createPartialMockNotification, -} from '../../../__mocks__/notifications-mocks'; +import { createPartialMockNotification } from '../../../__mocks__/notifications-mocks'; import { mockSettings } from '../../../__mocks__/state-mocks'; import type { GitifyNotification, Link } from '../../../types'; import { getWorkflowRunAttributes, workflowRunHandler } from './workflowRun'; @@ -60,13 +57,13 @@ describe('renderer/utils/notifications/handlers/workflowRun.ts', () => { }); it('iconType', () => { - expect( - workflowRunHandler.iconType( - createMockSubject({ - type: 'WorkflowRun', - }), - ).displayName, - ).toBe('RocketIcon'); + const mockNotification = createPartialMockNotification({ + type: 'WorkflowRun', + }); + + expect(workflowRunHandler.iconType(mockNotification).displayName).toBe( + 'RocketIcon', + ); }); it('defaultUrl', () => { diff --git a/src/renderer/utils/notifications/handlers/workflowRun.ts b/src/renderer/utils/notifications/handlers/workflowRun.ts index 1fff46963..d732f6021 100644 --- a/src/renderer/utils/notifications/handlers/workflowRun.ts +++ b/src/renderer/utils/notifications/handlers/workflowRun.ts @@ -39,7 +39,7 @@ class WorkflowRunHandler extends DefaultHandler { return {}; } - iconType(_subject: GitifySubject): FC | null { + iconType(_notification: GitifyNotification): FC { return RocketIcon; }