diff --git a/__test__/unit/notifications/subscriptionmanager.test.ts b/__test__/unit/notifications/subscriptionmanager.test.ts new file mode 100644 index 000000000..e9e587948 --- /dev/null +++ b/__test__/unit/notifications/subscriptionmanager.test.ts @@ -0,0 +1,32 @@ +import MockNotification from '../../support/mocks/MockNotification'; +import { SubscriptionManager } from '../../../src/shared/managers/SubscriptionManager'; +import { NotificationPermission } from '../../../src/shared/models/NotificationPermission'; + +describe('SubscriptionManager', () => { + describe('requestNotificationPermission', () => { + beforeEach(() => { + window.Notification = MockNotification; + }); + + test('default', async () => { + MockNotification.permission = 'default'; + expect(await SubscriptionManager.requestNotificationPermission()).toBe( + NotificationPermission.Default, + ); + }); + + test('denied', async () => { + MockNotification.permission = 'denied'; + expect(await SubscriptionManager.requestNotificationPermission()).toBe( + NotificationPermission.Denied, + ); + }); + + test('granted', async () => { + MockNotification.permission = 'granted'; + expect(await SubscriptionManager.requestNotificationPermission()).toBe( + NotificationPermission.Granted, + ); + }); + }); +}); diff --git a/src/shared/managers/SubscriptionManager.ts b/src/shared/managers/SubscriptionManager.ts index 1c8abb549..52c7bd4c8 100644 --- a/src/shared/managers/SubscriptionManager.ts +++ b/src/shared/managers/SubscriptionManager.ts @@ -333,7 +333,7 @@ export class SubscriptionManager { const results = await window.Notification.requestPermission(); // TODO: Clean up our custom NotificationPermission enum // in favor of TS union type NotificationPermission instead of converting - return NotificationPermission[results]; + return results as NotificationPermission; } public async isAlreadyRegisteredWithOneSignal(): Promise {