Skip to content

Commit 1209a36

Browse files
Merge pull request #408 from splitio/refactors
Polishing
2 parents d6a0e69 + 84f73c7 commit 1209a36

File tree

4 files changed

+27
-19
lines changed

4 files changed

+27
-19
lines changed

src/consent/__tests__/sdkUserConsent.spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ test('createUserConsentAPI', () => {
77
const syncManager = { submitterManager: syncTaskFactory() };
88
const storage = {
99
events: { clear: jest.fn() },
10-
impressions: { clear: jest.fn() }
10+
impressions: { clear: jest.fn() },
11+
impressionCounts: { clear: jest.fn() },
12+
uniqueKeys: { clear: jest.fn() }
1113
};
1214

1315
// @ts-ignore

src/consent/sdkUserConsent.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const ConsentStatus = {
1515
* The public user consent API exposed via SplitFactory, used to control if the SDK tracks and sends impressions and events or not.
1616
*/
1717
export function createUserConsentAPI(params: ISdkFactoryContext) {
18-
const { settings, settings: { log }, syncManager, storage: { events, impressions, impressionCounts } } = params;
18+
const { settings, settings: { log }, syncManager, storage: { events, impressions, impressionCounts, uniqueKeys } } = params;
1919

2020
if (!isConsentGranted(settings)) log.info(USER_CONSENT_INITIAL, [settings.userConsent]);
2121

@@ -41,7 +41,8 @@ export function createUserConsentAPI(params: ISdkFactoryContext) {
4141
// @ts-ignore, clear method is present in storage for standalone and partial consumer mode
4242
if (events.clear) events.clear(); // @ts-ignore
4343
if (impressions.clear) impressions.clear(); // @ts-ignore
44-
if (impressionCounts && impressionCounts.clear) impressionCounts.clear();
44+
if (impressionCounts.clear) impressionCounts.clear(); // @ts-ignore
45+
if (uniqueKeys.clear) uniqueKeys.clear();
4546
}
4647
} else {
4748
log.info(USER_CONSENT_NOT_UPDATED, [newConsentStatus]);

src/listeners/__tests__/browser.spec.ts

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { BrowserSignalListener } from '../browser';
2-
import { IEventsCacheSync, IImpressionCountsCacheSync, IImpressionsCacheSync, IStorageSync, ITelemetryCacheSync, IUniqueKeysCacheBase } from '../../storages/types';
32
import { ISplitApi } from '../../services/types';
43
import { fullSettings } from '../../utils/settingsValidation/__tests__/settings.mocks';
54

@@ -30,42 +29,48 @@ const fakeUniqueKeys = {
3029
};
3130

3231
// Storage with impressionsCount and telemetry cache
33-
const fakeStorageOptimized = { // @ts-expect-error
32+
const fakeStorageOptimized = {
3433
impressions: {
3534
isEmpty: jest.fn(),
3635
pop() {
3736
return [fakeImpression];
3837
}
39-
} as IImpressionsCacheSync, // @ts-expect-error
38+
},
4039
events: {
4140
isEmpty: jest.fn(),
4241
pop() {
4342
return [fakeEvent];
4443
}
45-
} as IEventsCacheSync, // @ts-expect-error
44+
},
4645
impressionCounts: {
4746
isEmpty: jest.fn(),
4847
pop() {
4948
return fakeImpressionCounts;
5049
}
51-
} as IImpressionCountsCacheSync, // @ts-expect-error
50+
},
5251
uniqueKeys: {
5352
isEmpty: jest.fn(),
5453
pop() {
5554
return fakeUniqueKeys;
5655
}
57-
} as IUniqueKeysCacheBase, // @ts-expect-error
56+
},
5857
telemetry: {
5958
isEmpty: jest.fn(),
6059
pop() {
6160
return 'fake telemetry';
6261
}
63-
} as ITelemetryCacheSync
62+
}
6463
};
6564

6665
const fakeStorageDebug = {
6766
impressions: fakeStorageOptimized.impressions,
68-
events: fakeStorageOptimized.events
67+
events: fakeStorageOptimized.events,
68+
impressionCounts: {
69+
isEmpty: jest.fn(() => true)
70+
},
71+
uniqueKeys: {
72+
isEmpty: jest.fn(() => true)
73+
}
6974
};
7075

7176
// @ts-expect-error
@@ -155,7 +160,8 @@ function assertStop(listener: BrowserSignalListener) {
155160

156161
test('Browser JS listener / consumer mode', () => {
157162
// No SyncManager ==> consumer mode
158-
const listener = new BrowserSignalListener(undefined, fullSettings, fakeStorageOptimized as IStorageSync, fakeSplitApi);
163+
// @ts-expect-error
164+
const listener = new BrowserSignalListener(undefined, fullSettings, fakeStorageOptimized, fakeSplitApi);
159165

160166
listener.start();
161167
assertStart(listener);
@@ -180,7 +186,7 @@ test('Browser JS listener / standalone mode / Impressions optimized mode with te
180186
const syncManagerMock = {};
181187

182188
// @ts-expect-error
183-
const listener = new BrowserSignalListener(syncManagerMock, fullSettings, fakeStorageOptimized as IStorageSync, fakeSplitApi);
189+
const listener = new BrowserSignalListener(syncManagerMock, fullSettings, fakeStorageOptimized, fakeSplitApi);
184190

185191
listener.start();
186192
assertStart(listener);
@@ -205,7 +211,7 @@ test('Browser JS listener / standalone mode / Impressions debug mode', () => {
205211
const syncManagerMock = {};
206212

207213
// @ts-expect-error
208-
const listener = new BrowserSignalListener(syncManagerMock, fullSettings, fakeStorageDebug as IStorageSync, fakeSplitApi);
214+
const listener = new BrowserSignalListener(syncManagerMock, fullSettings, fakeStorageDebug, fakeSplitApi);
209215

210216
listener.start();
211217
assertStart(listener);
@@ -234,7 +240,7 @@ test('Browser JS listener / standalone mode / Impressions debug mode', () => {
234240
test('Browser JS listener / standalone mode / Fallback to regular Fetch transport', () => {
235241

236242
function runBrowserListener() { // @ts-expect-error
237-
const listener = new BrowserSignalListener({}, fullSettings, fakeStorageDebug as IStorageSync, fakeSplitApi);
243+
const listener = new BrowserSignalListener({}, fullSettings, fakeStorageDebug, fakeSplitApi);
238244
listener.start();
239245
// Trigger data flush
240246
triggerEvent(VISIBILITYCHANGE_EVENT, 'hidden');
@@ -270,7 +276,7 @@ test('Browser JS listener / standalone mode / user consent status', () => {
270276
const settings = { ...fullSettings };
271277

272278
// @ts-expect-error
273-
const listener = new BrowserSignalListener(syncManagerMock, settings, fakeStorageOptimized as IStorageSync, fakeSplitApi);
279+
const listener = new BrowserSignalListener(syncManagerMock, settings, fakeStorageOptimized, fakeSplitApi);
274280

275281
listener.start();
276282

src/listeners/browser.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,8 @@ export class BrowserSignalListener implements ISignalListener {
8484

8585
this._flushData(events + '/testImpressions/beacon', this.storage.impressions, this.serviceApi.postTestImpressionsBulk, this.fromImpressionsCollector, extraMetadata);
8686
this._flushData(events + '/events/beacon', this.storage.events, this.serviceApi.postEventsBulk);
87-
if (this.storage.impressionCounts) this._flushData(events + '/testImpressions/count/beacon', this.storage.impressionCounts, this.serviceApi.postTestImpressionsCount, fromImpressionCountsCollector);
88-
// @ts-ignore
89-
if (this.storage.uniqueKeys) this._flushData(telemetry + '/v1/keys/cs/beacon', this.storage.uniqueKeys, this.serviceApi.postUniqueKeysBulkCs);
87+
this._flushData(events + '/testImpressions/count/beacon', this.storage.impressionCounts, this.serviceApi.postTestImpressionsCount, fromImpressionCountsCollector);
88+
this._flushData(telemetry + '/v1/keys/cs/beacon', this.storage.uniqueKeys, this.serviceApi.postUniqueKeysBulkCs);
9089
}
9190

9291
// Flush telemetry data

0 commit comments

Comments
 (0)