@@ -4,13 +4,9 @@ import { fullSettings } from '../../utils/settingsValidation/__tests__/settings.
44import { loggerMock } from '../../logger/__tests__/sdkLogger.mock' ;
55import { IRBSegment , ISplit } from '../../dtos/types' ;
66
7- import * as dataLoader from '../dataLoader' ;
7+ import { setRolloutPlan , getRolloutPlan } from '../dataLoader' ;
88
99describe ( 'getRolloutPlan & setRolloutPlan (client-side)' , ( ) => {
10- jest . spyOn ( dataLoader , 'setRolloutPlan' ) ;
11- const onReadyFromCacheCb = jest . fn ( ) ;
12- const onReadyCb = jest . fn ( ) ;
13-
1410 const otherKey = 'otherKey' ;
1511
1612 // @ts -expect-error Load server-side storage
@@ -41,56 +37,54 @@ describe('getRolloutPlan & setRolloutPlan (client-side)', () => {
4137 } ) ;
4238
4339 test ( 'using preloaded data (no memberships, no segments)' , ( ) => {
44- const rolloutPlan = dataLoader . getRolloutPlan ( loggerMock , serverStorage ) ;
40+ const rolloutPlan = getRolloutPlan ( loggerMock , serverStorage ) ;
4541
46- // Load client-side storage with preloaded data
47- const clientStorage = InMemoryStorageCSFactory ( { settings : { ...fullSettings , initialRolloutPlan : rolloutPlan } , onReadyFromCacheCb, onReadyCb } ) ;
48- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 1 ) ;
49- expect ( onReadyFromCacheCb ) . toBeCalledTimes ( 1 ) ;
42+ // @ts -expect-error Load client-side storage with preloaded data
43+ const clientStorage = InMemoryStorageCSFactory ( { settings : fullSettings } ) ;
44+ setRolloutPlan ( loggerMock , rolloutPlan , clientStorage , fullSettings . core . key as string ) ;
5045
5146 // Shared client storage
5247 const sharedClientStorage = clientStorage . shared ! ( otherKey ) ;
53- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 2 ) ;
48+ setRolloutPlan ( loggerMock , rolloutPlan , { segments : sharedClientStorage . segments , largeSegments : sharedClientStorage . largeSegments } , otherKey ) ;
5449
5550 expect ( clientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ ] ) ;
5651 expect ( sharedClientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ ] ) ;
5752
5853 // Get preloaded data from client-side storage
59- expect ( dataLoader . getRolloutPlan ( loggerMock , clientStorage ) ) . toEqual ( rolloutPlan ) ;
54+ expect ( getRolloutPlan ( loggerMock , clientStorage ) ) . toEqual ( rolloutPlan ) ;
6055 expect ( rolloutPlan ) . toEqual ( { ...expectedRolloutPlan , memberships : undefined , segmentChanges : undefined } ) ;
6156 } ) ;
6257
6358 test ( 'using preloaded data with memberships' , ( ) => {
64- const rolloutPlan = dataLoader . getRolloutPlan ( loggerMock , serverStorage , { keys : [ fullSettings . core . key as string , otherKey ] } ) ;
59+ const rolloutPlan = getRolloutPlan ( loggerMock , serverStorage , { keys : [ fullSettings . core . key as string , otherKey ] } ) ;
6560
66- // Load client-side storage with preloaded data
67- const clientStorage = InMemoryStorageCSFactory ( { settings : { ...fullSettings , initialRolloutPlan : rolloutPlan } , onReadyFromCacheCb, onReadyCb } ) ;
68- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 1 ) ;
69- expect ( onReadyFromCacheCb ) . toBeCalledTimes ( 1 ) ;
61+ // @ts -expect-error Load client-side storage with preloaded data
62+ const clientStorage = InMemoryStorageCSFactory ( { settings : fullSettings } ) ;
63+ setRolloutPlan ( loggerMock , rolloutPlan , clientStorage , fullSettings . core . key as string ) ;
7064
7165 // Shared client storage
7266 const sharedClientStorage = clientStorage . shared ! ( otherKey ) ;
73- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 2 ) ;
67+ setRolloutPlan ( loggerMock , rolloutPlan , { segments : sharedClientStorage . segments , largeSegments : sharedClientStorage . largeSegments } , otherKey ) ;
7468
7569 expect ( clientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ 'segment1' ] ) ;
7670 expect ( sharedClientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ 'segment1' ] ) ;
7771
78- // Get preloaded data from client-side storage
79- expect ( dataLoader . getRolloutPlan ( loggerMock , clientStorage , { keys : [ fullSettings . core . key as string , otherKey ] } ) ) . toEqual ( rolloutPlan ) ;
80- expect ( rolloutPlan ) . toEqual ( { ...expectedRolloutPlan , segmentChanges : undefined } ) ;
72+ // @TODO requires internal storage cache for `shared` storages
73+ // // Get preloaded data from client-side storage
74+ // expect(getRolloutPlan(loggerMock, clientStorage, { keys: [fullSettings.core.key as string, otherKey] })).toEqual(rolloutPlan);
75+ // expect(rolloutPlan).toEqual({ ...expectedRolloutPlan, segmentChanges: undefined });
8176 } ) ;
8277
8378 test ( 'using preloaded data with segments' , ( ) => {
84- const rolloutPlan = dataLoader . getRolloutPlan ( loggerMock , serverStorage , { exposeSegments : true } ) ;
79+ const rolloutPlan = getRolloutPlan ( loggerMock , serverStorage , { exposeSegments : true } ) ;
8580
86- // Load client-side storage with preloaded data
87- const clientStorage = InMemoryStorageCSFactory ( { settings : { ...fullSettings , initialRolloutPlan : rolloutPlan } , onReadyFromCacheCb, onReadyCb } ) ;
88- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 1 ) ;
89- expect ( onReadyFromCacheCb ) . toBeCalledTimes ( 1 ) ;
81+ // @ts -expect-error Load client-side storage with preloaded data
82+ const clientStorage = InMemoryStorageCSFactory ( { settings : fullSettings } ) ;
83+ setRolloutPlan ( loggerMock , rolloutPlan , clientStorage , fullSettings . core . key as string ) ;
9084
9185 // Shared client storage
9286 const sharedClientStorage = clientStorage . shared ! ( otherKey ) ;
93- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 2 ) ;
87+ setRolloutPlan ( loggerMock , rolloutPlan , { segments : sharedClientStorage . segments , largeSegments : sharedClientStorage . largeSegments } , otherKey ) ;
9488
9589 expect ( clientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ 'segment1' ] ) ;
9690 expect ( sharedClientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ 'segment1' ] ) ;
@@ -99,16 +93,15 @@ describe('getRolloutPlan & setRolloutPlan (client-side)', () => {
9993 } ) ;
10094
10195 test ( 'using preloaded data with memberships and segments' , ( ) => {
102- const rolloutPlan = dataLoader . getRolloutPlan ( loggerMock , serverStorage , { keys : [ fullSettings . core . key as string ] , exposeSegments : true } ) ;
96+ const rolloutPlan = getRolloutPlan ( loggerMock , serverStorage , { keys : [ fullSettings . core . key as string ] , exposeSegments : true } ) ;
10397
104- // Load client-side storage with preloaded data
105- const clientStorage = InMemoryStorageCSFactory ( { settings : { ...fullSettings , initialRolloutPlan : rolloutPlan } , onReadyFromCacheCb, onReadyCb } ) ;
106- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 1 ) ;
107- expect ( onReadyFromCacheCb ) . toBeCalledTimes ( 1 ) ;
98+ // @ts -expect-error Load client-side storage with preloaded data
99+ const clientStorage = InMemoryStorageCSFactory ( { settings : fullSettings } ) ;
100+ setRolloutPlan ( loggerMock , rolloutPlan , clientStorage , fullSettings . core . key as string ) ;
108101
109102 // Shared client storage
110103 const sharedClientStorage = clientStorage . shared ! ( otherKey ) ;
111- expect ( dataLoader . setRolloutPlan ) . toBeCalledTimes ( 2 ) ;
104+ setRolloutPlan ( loggerMock , rolloutPlan , { segments : sharedClientStorage . segments , largeSegments : sharedClientStorage . largeSegments } , otherKey ) ;
112105
113106 expect ( clientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ 'segment1' ] ) ; // main client membership is set via the rollout plan `memberships` field
114107 expect ( sharedClientStorage . segments . getRegisteredSegments ( ) ) . toEqual ( [ 'segment1' ] ) ; // shared client membership is set via the rollout plan `segmentChanges` field
0 commit comments