Skip to content

Commit 014ef98

Browse files
authored
Merge pull request #1227 from OneSignal/fg/service-worker-tests-3
Service Worker Tests Part 3
2 parents 06e4e99 + 915bc2b commit 014ef98

33 files changed

+363
-1821
lines changed

__test__/setupTests.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { server } from './support/mocks/server';
2-
32
beforeAll(() => server.listen());
43
afterEach(() => server.resetHandlers());
54
afterAll(() => server.close());
5+
6+
global.isSecureContext = true;

__test__/support/environment/TestContext.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ export default class TestContext {
449449
persistNotification: false,
450450
webhooks: {
451451
cors: true,
452-
'notification.displayed':
452+
'notification.willDisplay':
453453
'https://fake-config.com/notification-displayed',
454454
'notification.clicked': 'https://fake-config.com/notification-clicked',
455455
'notification.dismissed':

__test__/support/environment/TestEnvironment.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ import {
2020
} from '../helpers/core';
2121
import MainHelper from '../../../src/shared/helpers/MainHelper';
2222
import { DUMMY_ONESIGNAL_ID, DUMMY_PUSH_TOKEN } from '../constants';
23-
24-
declare let global: any;
23+
import { NotificationPermission } from 'src/shared/models/NotificationPermission';
2524

2625
export interface TestEnvironmentConfig {
2726
userConfig?: AppUserConfig;

__test__/support/environment/TestEnvironmentHelpers.ts

+4-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { DOMWindow, JSDOM, ResourceLoader } from 'jsdom';
77
import OneSignal from '../../../src/onesignal/OneSignal';
88
import { CUSTOM_LINK_CSS_CLASSES } from '../../../src/shared/slidedown/constants';
99
import { getSlidedownElement } from '../../../src/page/slidedown/SlidedownElement';
10-
import { MockServiceWorkerContainerWithAPIBan } from '../mocks/models/MockServiceWorkerContainerWithAPIBan';
1110
import BrowserUserAgent from '../models/BrowserUserAgent';
1211
import TestContext from './TestContext';
1312
import { CoreModuleDirector } from '../../../src/core/CoreModuleDirector';
@@ -17,13 +16,14 @@ import NotificationsNamespace from '../../../src/onesignal/NotificationsNamespac
1716
import UserNamespace from '../../../src/onesignal/UserNamespace';
1817
import { ONESIGNAL_EVENTS } from '../../../src/onesignal/OneSignalEvents';
1918
import bowser from 'bowser';
20-
import { bowserCastle } from '../../../src/shared/utils/bowserCastle';
19+
import * as bowerCastleHelpers from '../../../src/shared/utils/bowserCastle';
2120

2221
declare const global: any;
2322

2423
vi.mock('../../../src/shared/utils/bowserCastle', () => ({
2524
bowserCastle: vi.fn(),
2625
}));
26+
const bowserCastleSpy = vi.spyOn(bowerCastleHelpers, 'bowserCastle');
2727

2828
export function resetDatabase() {
2929
// Erase and reset IndexedDb database name to something random
@@ -35,12 +35,12 @@ export function mockUserAgent(config: TestEnvironmentConfig = {}): void {
3535
const info = bowser._detect(config.userAgent ?? BrowserUserAgent.Default);
3636

3737
// Modify the mock implementation
38-
bowserCastle.mockImplementation(() => ({
38+
bowserCastleSpy.mockReturnValue({
3939
mobile: info.mobile,
4040
tablet: info.tablet,
4141
name: info.name.toLowerCase(),
4242
version: info.version,
43-
}));
43+
});
4444
}
4545

4646
export async function initOSGlobals(config: TestEnvironmentConfig = {}) {
@@ -112,12 +112,6 @@ export async function stubDomEnvironment(config: TestEnvironmentConfig) {
112112
});
113113

114114
const windowDef = dom.window;
115-
// Node has its own console; overwriting it will cause issues
116-
delete (windowDef as any)['console'];
117-
(windowDef as any).navigator.serviceWorker =
118-
new MockServiceWorkerContainerWithAPIBan();
119-
// (windowDef as any).TextEncoder = TextEncoder;
120-
// (windowDef as any).TextDecoder = TextDecoder;
121115
(windowDef as any).location = url;
122116

123117
addCustomEventPolyfill(windowDef);

__test__/support/managers/PermissionManager.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { PermissionUtils } from '../../../src/shared/utils/PermissionUtils';
22
import RealPermissionManager from '../../../src/shared/managers/PermissionManager';
3+
import { NotificationPermission } from 'src/shared/models/NotificationPermission';
34

45
export class PermissionManager {
56
public static async mockNotificationPermissionChange(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export class MockServiceWorker implements Partial<ServiceWorkerContainer> {
2+
addEventListener(
3+
type: string,
4+
listener: EventListenerOrEventListenerObject,
5+
options?: boolean | AddEventListenerOptions,
6+
) {
7+
self.addEventListener(type, listener, options);
8+
}
9+
10+
removeEventListener(
11+
type: string,
12+
listener: EventListenerOrEventListenerObject,
13+
options?: boolean | EventListenerOptions,
14+
): void {
15+
self.removeEventListener(type, listener, options);
16+
}
17+
}

__test__/support/mocks/models/MockPushManager.ts

-49
This file was deleted.

__test__/support/mocks/models/MockPushSubscription.ts

-144
This file was deleted.

__test__/support/mocks/models/MockServiceWorker.ts

-75
This file was deleted.

0 commit comments

Comments
 (0)