From 0c4997c15d4e05ccbd5ac74626b5fefaabd3e859 Mon Sep 17 00:00:00 2001 From: Shepherd Date: Fri, 17 Nov 2023 20:17:03 -0500 Subject: [PATCH] Add getTags unit tests --- __test__/support/helpers/core.ts | 7 ++++ __test__/unit/user/user.test.ts | 57 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 __test__/unit/user/user.test.ts diff --git a/__test__/support/helpers/core.ts b/__test__/support/helpers/core.ts index 6f1cc255b..e2fa10ba5 100644 --- a/__test__/support/helpers/core.ts +++ b/__test__/support/helpers/core.ts @@ -14,6 +14,7 @@ import { } from '../constants'; import CoreModule from '../../../src/core/CoreModule'; import { CoreModuleDirector } from '../../../src/core/CoreModuleDirector'; +import { UserPropertiesModel } from '../../../src/core/models/UserPropertiesModel'; export function generateNewSubscription(modelId = '0000000000') { return new OSModel( @@ -42,6 +43,12 @@ export function getDummyIdentityOSModel( return new OSModel(ModelName.Identity, {}, modelId); } +export function getDummyPropertyOSModel( + modelId = DUMMY_MODEL_ID, +): OSModel { + return new OSModel(ModelName.Properties, {}, modelId); +} + export function getDummyPushSubscriptionOSModel(): OSModel { return new OSModel( ModelName.PushSubscriptions, diff --git a/__test__/unit/user/user.test.ts b/__test__/unit/user/user.test.ts new file mode 100644 index 000000000..edb4aeaa9 --- /dev/null +++ b/__test__/unit/user/user.test.ts @@ -0,0 +1,57 @@ +import { TestEnvironment } from '../../support/environment/TestEnvironment'; +import User from '../../../src/onesignal/User'; +import { ModelName } from '../../../src/core/models/SupportedModels'; +import { getDummyPropertyOSModel } from '../../support/helpers/core'; + +// suppress all internal logging +jest.mock('../../../src/shared/libraries/Log'); + +describe('User tests', () => { + test('getTags called without a properties model should return undefined tags', async () => { + await TestEnvironment.initialize(); + + const user = User.createOrGetInstance(); + const tags = user.getTags(); + + expect(tags).toBe(undefined); + }); + + test('getTags called with undefined tags in properties model should return undefined tags', async () => { + await TestEnvironment.initialize(); + + OneSignal.coreDirector.add(ModelName.Properties, getDummyPropertyOSModel()); + + const user = User.createOrGetInstance(); + const tags = user.getTags(); + + expect(tags).toBe(undefined); + }); + + test('getTags called with empty tags in properties model should return empty tags', async () => { + await TestEnvironment.initialize(); + + const propertyModel = getDummyPropertyOSModel(); + propertyModel.set('tags', {}); + OneSignal.coreDirector.add(ModelName.Properties, propertyModel); + + const user = User.createOrGetInstance(); + const tags = user.getTags(); + + expect(tags).toStrictEqual({}); + }); + + test('getTags called with tags in properties model should return tags', async () => { + await TestEnvironment.initialize(); + + const tagsSample = { 'key1': 'value1' }; + + const propertyModel = getDummyPropertyOSModel(); + propertyModel.set('tags', tagsSample); + OneSignal.coreDirector.add(ModelName.Properties, propertyModel); + + const user = User.createOrGetInstance(); + const tags = user.getTags(); + + expect(tags).toBe(tagsSample); + }); +});