onesignal-web-sdk
Version:
Web push notifications from OneSignal.
347 lines (289 loc) • 11.3 kB
text/typescript
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);
});