|
1 | 1 | import sinon from 'sinon';
|
2 | 2 | import { expect } from '@esm-bundle/chai';
|
3 |
| -import loadDelayed, { loadPrivacy, loadJarvisChat, loadGoogleLogin } from '../../libs/scripts/delayed.js'; |
| 3 | +import loadDelayed, { loadPrivacy, loadJarvisChat, loadGoogleLogin, addRUMCampaignTrackingParameters } from '../../libs/scripts/delayed.js'; |
4 | 4 | import { getMetadata, getConfig, setConfig, loadIms } from '../../libs/utils/utils.js';
|
5 | 5 |
|
6 | 6 | describe('Delayed', () => {
|
@@ -61,3 +61,46 @@ describe('Delayed', () => {
|
61 | 61 | clock.restore();
|
62 | 62 | });
|
63 | 63 | });
|
| 64 | + |
| 65 | +describe('addRUMCampaignTrackingParameters', () => { |
| 66 | + const originalURLSearchParams = window.URLSearchParams; |
| 67 | + const setURLSearchParamsStub = (params) => { |
| 68 | + window.URLSearchParams = sinon.stub().returns({ get: (key) => params[key] }); |
| 69 | + }; |
| 70 | + |
| 71 | + afterEach(() => { |
| 72 | + window.URLSearchParams = originalURLSearchParams; |
| 73 | + }); |
| 74 | + |
| 75 | + it('should call sampleRUM for valid sdid, mv, and mv2', () => { |
| 76 | + setURLSearchParamsStub({ |
| 77 | + sdid: '12345678', |
| 78 | + mv: 'foo', |
| 79 | + mv2: 'bar', |
| 80 | + }); |
| 81 | + const sampleRUM = sinon.stub(); |
| 82 | + addRUMCampaignTrackingParameters({ sampleRUM }); |
| 83 | + expect(sampleRUM.calledThrice).to.be.true; |
| 84 | + expect(sampleRUM.getCall(0).args).to.deep.equal(['utm', { source: 'utm_campaign', target: '12345678' }]); |
| 85 | + expect(sampleRUM.getCall(1).args).to.deep.equal(['utm', { source: 'utm_source', target: 'foo' }]); |
| 86 | + expect(sampleRUM.getCall(2).args).to.deep.equal(['utm', { source: 'utm_medium', target: 'bar' }]); |
| 87 | + }); |
| 88 | + |
| 89 | + it('should NOT call sampleRUM for sdid if too long', () => { |
| 90 | + setURLSearchParamsStub({ |
| 91 | + sdid: '123456789012345', |
| 92 | + mv: 'foo', |
| 93 | + }); |
| 94 | + const sampleRUM = sinon.stub(); |
| 95 | + addRUMCampaignTrackingParameters({ sampleRUM }); |
| 96 | + expect(sampleRUM.calledOnce).to.be.true; |
| 97 | + expect(sampleRUM.getCall(0).args).to.deep.equal(['utm', { source: 'utm_source', target: 'foo' }]); |
| 98 | + }); |
| 99 | + |
| 100 | + it('should skip missing params', () => { |
| 101 | + setURLSearchParamsStub({ irrelevant: 'x' }); |
| 102 | + const sampleRUM = sinon.stub(); |
| 103 | + addRUMCampaignTrackingParameters({ sampleRUM }); |
| 104 | + expect(sampleRUM.notCalled).to.be.true; |
| 105 | + }); |
| 106 | +}); |
0 commit comments