UNPKG

onesignal-web-sdk

Version:

Web push notifications from OneSignal.

52 lines (41 loc) 2.26 kB
import '../../support/polyfills/polyfills'; import test from 'ava'; import { TestEnvironment, HttpHttpsEnvironment } from '../../support/sdk/TestEnvironment'; import OneSignal from '../../../src/OneSignal'; import sinon from 'sinon'; import SubscriptionHelper from '../../../src/helpers/SubscriptionHelper'; import { SubscriptionManager } from '../../../src/managers/SubscriptionManager'; import { SessionManager } from '../../../src/managers/SessionManager'; const sinonSandbox = sinon.sandbox.create(); test.beforeEach(async () => { await TestEnvironment.initialize({ httpOrHttps: HttpHttpsEnvironment.Https }); TestEnvironment.mockInternalOneSignal(); }); test.afterEach(() => { sinonSandbox.restore(); }) test('should not resubscribe user on subsequent page views if the user is already subscribed', async t => { sinonSandbox.stub(OneSignal, 'privateIsPushNotificationsEnabled').resolves(true); sinonSandbox.stub(SessionManager.prototype, 'getPageViewCount').returns(2); const subscribeSpy = sinonSandbox.spy(SubscriptionManager.prototype, 'subscribe'); await SubscriptionHelper.registerForPush(); t.true(subscribeSpy.notCalled); }); test('should subscribe user on subsequent page views if the user is not subscribed', async t => { sinonSandbox.stub(OneSignal, 'isPushNotificationsEnabled').resolves(false); sinonSandbox.stub(SessionManager.prototype, 'getPageViewCount').returns(2); sinonSandbox.stub(SubscriptionManager.prototype, 'registerSubscription').resolves(); const subscribeStub = sinonSandbox.stub(SubscriptionManager.prototype, 'subscribe').resolves(null); await SubscriptionHelper.registerForPush(); t.true(subscribeStub.called); }); test('should resubscribe an already subscribed user on first page view', async t => { sinonSandbox.stub(OneSignal, 'isPushNotificationsEnabled').resolves(true); sinonSandbox.stub(SessionManager.prototype, 'getPageViewCount').returns(1); sinonSandbox.stub(SubscriptionManager.prototype, 'registerSubscription').resolves(); const subscribeStub = sinonSandbox.stub(SubscriptionManager.prototype, 'subscribe').resolves(null); await SubscriptionHelper.registerForPush(); t.true(subscribeStub.called); });