UNPKG

onesignal-web-sdk

Version:

Web push notifications from OneSignal.

347 lines (289 loc) 11.3 kB
import '../../support/polyfills/polyfills'; import test from 'ava'; import { TestEnvironment, HttpHttpsEnvironment } from '../../support/sdk/TestEnvironment'; import { ConfigIntegrationKind } from '../../../src/models/AppConfig'; import { AppUserConfig } from '../../../src/models/AppConfig'; import Random from "../../support/tester/Random"; import { ConfigHelper } from '../../../src/helpers/ConfigHelper'; test.beforeEach(async () => { await TestEnvironment.initialize({ httpOrHttps: HttpHttpsEnvironment.Https }); }); test('promptOptions 1 - autoRegister = true backwards compatibility for custom integration (shows native on HTTPS)', t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, ); t.is(finalPromptOptions!.native!.enabled, true); t.is(finalPromptOptions!.native!.autoPrompt, true); t.is(finalPromptOptions!.slidedown!.enabled, false); t.is(finalPromptOptions!.slidedown!.autoPrompt, false); t.is(finalPromptOptions!.autoPrompt, true); }); test('promptOptions 2 - autoRegister = true backwards compatibility for custom integration (shows slidedown on HTTP)', t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, true ); t.is(finalPromptOptions!.native!.enabled, false); t.is(finalPromptOptions!.native!.autoPrompt, false); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, true); t.is(finalPromptOptions!.autoPrompt, true); }); test('promptOptions 3 - autoRegister = false backwards compatibility for custom integration (no enabled prompts)', t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: false, }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig ); t.is(finalPromptOptions!.native!.enabled, false); t.is(finalPromptOptions!.native!.autoPrompt, false); t.is(finalPromptOptions!.slidedown!.enabled, false); t.is(finalPromptOptions!.slidedown!.autoPrompt, false); t.is(finalPromptOptions!.autoPrompt, false); }); test(`promptOptions 4 - autoRegister = true backwards compatibility for custom integration (ignores config, shows native on HTTPS)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { slidedown: { enabled: true, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig ); t.is(finalPromptOptions!.native!.enabled, true); t.is(finalPromptOptions!.native!.autoPrompt, true); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, true); t.is(finalPromptOptions!.autoPrompt, true); }); test(`promptOptions 5 - autoRegister backwards compatibility for custom integration (ignores config, shows slidedown on HTTP)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { slidedown: { enabled: true, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, true ); t.is(finalPromptOptions!.native!.enabled, false); t.is(finalPromptOptions!.native!.autoPrompt, false); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, true); t.is(finalPromptOptions!.autoPrompt, true); }); test(`promptOptions 6 - autoRegister = true backwards compatibility for custom integration (ignores config, shows native on HTTPS)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { slidedown: { enabled: true, autoPrompt: false, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, false ); t.is(finalPromptOptions!.native!.enabled, true); t.is(finalPromptOptions!.native!.autoPrompt, true); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, false); t.is(finalPromptOptions!.autoPrompt, true); }); test(`promptOptions 7 - autoRegister = true backwards compatibility for custom integration (ignores config, shows slidedown on HTTP)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { slidedown: { enabled: true, autoPrompt: false, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, true ); t.is(finalPromptOptions!.native!.enabled, false); t.is(finalPromptOptions!.native!.autoPrompt, false); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, true); t.is(finalPromptOptions!.autoPrompt, true); }); test(`promptOptions 8 - autoRegister = true backwards compatibility for custom integration (ignores config, shows native on HTTPS)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { native: { enabled: true, autoPrompt: true, }, slidedown: { enabled: true, autoPrompt: false, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig ); t.is(finalPromptOptions!.native!.enabled, true); t.is(finalPromptOptions!.native!.autoPrompt, true); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, false); t.is(finalPromptOptions!.autoPrompt, true); }); test(`promptOptions 9 - autoRegister= true backwards compatibility for custom integration (ignores config, shows native on HTTPS)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { native: { enabled: true, autoPrompt: false, }, slidedown: { enabled: true, autoPrompt: false, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, false ); t.is(finalPromptOptions!.native!.enabled, true); t.is(finalPromptOptions!.native!.autoPrompt, true); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, false); t.is(finalPromptOptions!.autoPrompt, true); }); test(`promptOptions 10 - autoRegister backwards compatibility for custom integration (ignores config, shows slidedown on HTTP)`, t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; (fakeUserConfig as any).promptOptions = { native: { enabled: true, autoPrompt: false, }, slidedown: { enabled: true, autoPrompt: false, } }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalPromptOptions = ConfigHelper.injectDefaultsIntoPromptOptions( fakeUserConfig.promptOptions, fakeServerConfig.config.staticPrompts, fakeUserConfig, true ); t.is(finalPromptOptions!.native!.enabled, false); t.is(finalPromptOptions!.native!.autoPrompt, false); t.is(finalPromptOptions!.slidedown!.enabled, true); t.is(finalPromptOptions!.slidedown!.autoPrompt, true); t.is(finalPromptOptions!.autoPrompt, true); }); test('autoResubscribe - autoRegister backwards compatibility for custom integration 1', t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: true, }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalConfig = ConfigHelper.getUserConfigForConfigIntegrationKind( ConfigIntegrationKind.Custom, fakeUserConfig, fakeServerConfig ); t.is(finalConfig.autoResubscribe, true); }); test('autoResubscribe - autoRegister backwards compatibility for custom integration 2', t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalConfig = ConfigHelper.getUserConfigForConfigIntegrationKind( ConfigIntegrationKind.Custom, fakeUserConfig, fakeServerConfig ); t.is(finalConfig.autoResubscribe, fakeServerConfig.config.autoResubscribe); }); test('autoResubscribe - autoRegister backwards compatibility for custom integration 3', t => { const fakeUserConfig: AppUserConfig = { appId: Random.getRandomUuid(), autoRegister: false, autoResubscribe: true }; const fakeServerConfig = TestEnvironment.getFakeServerAppConfig(ConfigIntegrationKind.Custom); const finalConfig = ConfigHelper.getUserConfigForConfigIntegrationKind( ConfigIntegrationKind.Custom, fakeUserConfig, fakeServerConfig ); t.is(finalConfig.autoResubscribe, true); });