diff --git a/src/Rokt-Kit.js b/src/Rokt-Kit.js index d6cbb23..6f138b8 100644 --- a/src/Rokt-Kit.js +++ b/src/Rokt-Kit.js @@ -38,6 +38,7 @@ var constructor = function () { self.testHelpers = null; self.placementEventMappingLookup = {}; self.eventQueue = []; + self.integrationName = null; /** * Generates the Rokt launcher script URL with optional domain override and extensions @@ -113,9 +114,10 @@ var constructor = function () { {}, window.mParticle.Rokt.launcherOptions || {} ); - launcherOptions.integrationName = generateIntegrationName( + self.integrationName = generateIntegrationName( launcherOptions.integrationName ); + launcherOptions.integrationName = self.integrationName; if (testMode) { self.testHelpers = { diff --git a/test/src/tests.js b/test/src/tests.js index 1a1de36..af5ed9a 100644 --- a/test/src/tests.js +++ b/test/src/tests.js @@ -317,6 +317,93 @@ describe('Rokt Forwarder', () => { ); }); + it('should set integrationName on kit instance after attaching', async () => { + window.Rokt = new MockRoktForwarder(); + window.mParticle.Rokt = window.Rokt; + window.mParticle.Rokt.attachKitCalled = false; + + window.mParticle.Rokt.attachKit = async (kit) => { + window.mParticle.Rokt.attachKitCalled = true; + window.mParticle.Rokt.kit = kit; + return Promise.resolve(); + }; + + await mParticle.forwarder.init( + { + accountId: '123456', + }, + reportService.cb, + true + ); + + // Wait for initialization to complete + await waitForCondition(() => window.mParticle.Rokt.isInitialized); + + window.mParticle.Rokt.kit.integrationName.should.equal( + `${sdkVersion}_${kitVersion}` + ); + }); + + it('should set integrationName on kit instance with custom name when provided', async () => { + const customName = 'myCustomName'; + + window.Rokt = new MockRoktForwarder(); + window.mParticle.Rokt = window.Rokt; + window.mParticle.Rokt.attachKitCalled = false; + + window.mParticle.Rokt.attachKit = async (kit) => { + window.mParticle.Rokt.attachKitCalled = true; + window.mParticle.Rokt.kit = kit; + return Promise.resolve(); + }; + + window.mParticle.Rokt.launcherOptions = { + integrationName: customName, + }; + + await mParticle.forwarder.init( + { + accountId: '123456', + }, + reportService.cb, + true + ); + + // Wait for initialization to complete + await waitForCondition(() => window.mParticle.Rokt.isInitialized); + + window.mParticle.Rokt.kit.integrationName.should.equal( + `${sdkVersion}_${kitVersion}_${customName}` + ); + }); + + it('should have integrationName available on kit after initialization', async () => { + window.Rokt = new MockRoktForwarder(); + window.mParticle.Rokt = window.Rokt; + window.mParticle.Rokt.attachKitCalled = false; + + window.mParticle.Rokt.attachKit = async (kit) => { + window.mParticle.Rokt.attachKitCalled = true; + window.mParticle.Rokt.kit = kit; + return Promise.resolve(); + }; + + await mParticle.forwarder.init( + { + accountId: '123456', + }, + reportService.cb, + true + ); + + // Wait for initialization to complete + await waitForCondition(() => window.mParticle.Rokt.isInitialized); + + window.mParticle.Rokt.attachKitCalled.should.equal(true); + window.mParticle.Rokt.kit.integrationName.should.be.a.String(); + window.mParticle.Rokt.kit.integrationName.should.not.be.empty(); + }); + it('should not mutate the global launcherOptions object during initialization', async () => { const originalIntegrationName = 'globalIntegrationName';