Skip to content

Commit 9241e6d

Browse files
Add rbs in /splitChanges payload
1 parent 70a1bac commit 9241e6d

29 files changed

Lines changed: 260 additions & 75 deletions

src/__tests__/browserSuites/ignore-ip-addresses-setting.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ export default function (fetchMock, assert) {
102102
// Mock GET endpoints before creating the client
103103
const settings = settingsFactory(config);
104104
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), { status: 200, body: splitChangesMock1 });
105-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: { ff: { d: [], s: 1457552620999, t: 1457552620999 } } });
106105
fetchMock.getOnce(url(settings, `/memberships/${encodeURIComponent(config.core.key)}`), { status: 200, body: { ms: {} } });
107106

108107
// Init Split client

src/__tests__/browserSuites/impressions.debug.spec.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { SplitFactory } from '../../';
22
import { settingsFactory } from '../../settings';
33
import splitChangesMock1 from '../mocks/splitchanges.since.-1.json';
4-
import splitChangesMock2 from '../mocks/splitchanges.since.1457552620999.json';
54
import membershipsFacundo from '../mocks/memberships.facundo@split.io.json';
65
import { DEBUG } from '@splitsoftware/splitio-commons/src/utils/constants';
76
import { truncateTimeFrame } from '@splitsoftware/splitio-commons/src/utils/time';
@@ -25,7 +24,6 @@ let truncatedTimeFrame;
2524
export default function (fetchMock, assert) {
2625
// Mocking this specific route to make sure we only get the items we want to test from the handlers.
2726
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), { status: 200, body: splitChangesMock1 });
28-
fetchMock.get(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: splitChangesMock2 });
2927
fetchMock.get(url(settings, '/memberships/facundo%40split.io'), { status: 200, body: membershipsFacundo });
3028

3129
const splitio = SplitFactory({

src/__tests__/browserSuites/impressions.none.spec.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { SplitFactory } from '../..';
22
import { settingsFactory } from '../../settings/node';
33
import splitChangesMock1 from '../mocks/splitchanges.since.-1.json';
4-
import splitChangesMock2 from '../mocks/splitchanges.since.1457552620999.json';
54
import membershipsFacundo from '../mocks/memberships.facundo@split.io.json';
65
import { NONE } from '@splitsoftware/splitio-commons/src/utils/constants';
76
import { truncateTimeFrame } from '@splitsoftware/splitio-commons/src/utils/time';
@@ -42,7 +41,6 @@ const config = {
4241
export default async function (fetchMock, assert) {
4342
// Mocking this specific route to make sure we only get the items we want to test from the handlers.
4443
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), { status: 200, body: splitChangesMock1 });
45-
fetchMock.get(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: splitChangesMock2 });
4644
fetchMock.get(url(settings, '/memberships/facundo%40split.io'), { status: 200, body: membershipsFacundo });
4745
fetchMock.get(url(settings, '/memberships/emma%40split.io'), { status: 200, body: membershipsFacundo });
4846

src/__tests__/browserSuites/impressions.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ let truncatedTimeFrame;
2525
export default function (fetchMock, assert) {
2626
// Mocking this specific route to make sure we only get the items we want to test from the handlers.
2727
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), { status: 200, body: splitChangesMock1 });
28-
fetchMock.get(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: splitChangesMock2 });
28+
fetchMock.get(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), { status: 200, body: splitChangesMock2 });
2929
fetchMock.get(url(settings, '/memberships/facundo%40split.io'), { status: 200, body: membershipsFacundo });
3030

3131
const splitio = SplitFactory({

src/__tests__/browserSuites/push-initialization-nopush.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@ function testInitializationFail(fetchMock, assert, fallbackToPolling) {
5353
});
5454

5555
if (fallbackToPolling) {
56-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
56+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
5757
assert.true(ready, 'client ready');
5858
const lapse = Date.now() - start;
5959
assert.true(nearlyEqual(lapse, 0), 'polling (first fetch)');
6060
return { status: 200, body: splitChangesMock2 };
6161
});
6262
}
6363

64-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
64+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
6565
assert.true(ready, 'client ready');
6666
const lapse = Date.now() - start;
6767
assert.true(nearlyEqual(lapse, settings.scheduler.featuresRefreshRate), 'polling (second fetch)');

src/__tests__/browserSuites/push-initialization-retries.spec.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,18 @@ export function testPushRetriesDueToAuthErrors(fetchMock, assert) {
7171
assert.true(nearlyEqual(lapse, 0), 'initial sync');
7272
return { status: 200, body: splitChangesMock1 };
7373
});
74-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
74+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
7575
assert.true(ready, 'client ready before first polling fetch');
7676
const lapse = Date.now() - start;
7777
assert.true(nearlyEqual(lapse, 0), 'fallback to polling');
7878
return { status: 200, body: splitChangesMock2 };
7979
});
80-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
80+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
8181
const lapse = Date.now() - start;
8282
assert.true(nearlyEqual(lapse, settings.scheduler.featuresRefreshRate), 'polling');
8383
return { status: 200, body: splitChangesMock2 };
8484
});
85-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
85+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
8686
const lapse = Date.now() - start;
8787
assert.true(nearlyEqual(lapse, settings.scheduler.featuresRefreshRate * 2), 'keep polling since auth success buth with push disabled');
8888
client.destroy().then(() => {
@@ -142,18 +142,18 @@ export function testPushRetriesDueToSseErrors(fetchMock, assert) {
142142
assert.true(nearlyEqual(lapse, 0), 'initial sync');
143143
return { status: 200, body: splitChangesMock1 };
144144
});
145-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
145+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
146146
assert.true(ready, 'client ready before first polling fetch');
147147
const lapse = Date.now() - start;
148148
assert.true(nearlyEqual(lapse, 0), 'fallback to polling');
149149
return { status: 200, body: splitChangesMock2 };
150150
});
151-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
151+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
152152
const lapse = Date.now() - start;
153153
assert.true(nearlyEqual(lapse, settings.scheduler.featuresRefreshRate), 'polling');
154154
return { status: 200, body: splitChangesMock2 };
155155
});
156-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
156+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
157157
const lapse = Date.now() - start;
158158
assert.true(nearlyEqual(lapse, expectedTimeToSSEsuccess), 'sync due to success SSE connection');
159159
client.destroy().then(() => {
@@ -260,7 +260,7 @@ export function testSdkDestroyWhileAuthRetries(fetchMock, assert) {
260260

261261
fetchMock.get({ url: url(settings, '/memberships/nicolas%40split.io'), repeat: 2 }, { status: 200, body: membershipsNicolasMock });
262262
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), { status: 200, body: splitChangesMock1 });
263-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: splitChangesMock2 });
263+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), { status: 200, body: splitChangesMock2 });
264264

265265
fetchMock.get(new RegExp('.*'), function (url) {
266266
assert.fail('unexpected GET request with url: ' + url);

src/__tests__/browserSuites/push-refresh-token.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export function testRefreshToken(fetchMock, assert) {
8888
});
8989

9090
// sync after SSE opened
91-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: splitChangesMock2 });
91+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), { status: 200, body: splitChangesMock2 });
9292
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: membershipsNicolasMock1 });
9393

9494
// re-auth due to refresh token, with connDelay of 0.5 seconds
@@ -100,7 +100,7 @@ export function testRefreshToken(fetchMock, assert) {
100100
});
101101

102102
// sync after SSE reopened
103-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
103+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
104104
const lapse = Date.now() - start;
105105
assert.true(nearlyEqual(lapse, MILLIS_REFRESH_TOKEN + MILLIS_CONNDELAY), 'sync after SSE connection is reopened');
106106
return { status: 200, body: { ff: { d: [], s: 1457552620999, t: 1457552620999 } } };
@@ -116,7 +116,7 @@ export function testRefreshToken(fetchMock, assert) {
116116
});
117117

118118
// split sync after SSE closed due to push disabled
119-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
119+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
120120
const lapse = Date.now() - start;
121121
assert.true(nearlyEqual(lapse, MILLIS_REFRESH_TOKEN * 2), 'sync after SSE connection is reopened a second time');
122122
setTimeout(() => {

src/__tests__/browserSuites/push-synchronization-retries.spec.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -147,17 +147,17 @@ export function testSynchronizationRetries(fetchMock, assert) {
147147
fetchMock.get({ url: url(settings, '/memberships/marcio%40split.io'), repeat: 3 }, { status: 200, body: membershipsMarcio });
148148

149149
// split and segment sync after SSE opened
150-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
150+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
151151
const lapse = Date.now() - start;
152152
assert.true(nearlyEqual(lapse, MILLIS_SSE_OPEN), 'sync after SSE connection is opened');
153153
return { status: 200, body: splitChangesMock2 };
154154
});
155155
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: membershipsNicolasMock1 });
156156

157157
// fetch due to SPLIT_UPDATE event
158-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), { status: 200, body: splitChangesMock2 });
158+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), { status: 200, body: splitChangesMock2 });
159159
// fetch retry for SPLIT_UPDATE event, due to previous unexpected response (response till minor than SPLIT_UPDATE changeNumber)
160-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function () {
160+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function () {
161161
const lapse = Date.now() - start;
162162
assert.true(nearlyEqual(lapse, MILLIS_RETRY_FOR_FIRST_SPLIT_UPDATE_EVENT), 'fetch retry due to SPLIT_UPDATE event');
163163
return { status: 200, body: splitChangesMock3 };
@@ -177,18 +177,18 @@ export function testSynchronizationRetries(fetchMock, assert) {
177177
});
178178

179179
// fetch due to SPLIT_KILL event
180-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=-1'), function () {
180+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=100'), function () {
181181
assert.equal(client.getTreatment('whitelist'), 'not_allowed', 'evaluation with split killed immediately, before fetch is done');
182182
const lapse = Date.now() - start;
183183
assert.true(nearlyEqual(lapse, MILLIS_SPLIT_KILL_EVENT), 'sync due to SPLIT_KILL event');
184184
return { status: 200, body: { ff: { d: [], s: 1457552649999, t: 1457552649999 } } }; // returning old state
185185
});
186186
// first fetch retry for SPLIT_KILL event, due to previous unexpected response (response till minor than SPLIT_KILL changeNumber)
187-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=-1'), { throws: new TypeError('Network error') });
187+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=100'), { throws: new TypeError('Network error') });
188188
// second fetch retry for SPLIT_KILL event
189-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=-1'), { status: 200, body: '{ "since": 1457552620999, "til' }); // invalid JSON response
189+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=100'), { status: 200, body: '{ "since": 1457552620999, "til' }); // invalid JSON response
190190
// third fetch retry for SPLIT_KILL event
191-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=-1'), function () {
191+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=100'), function () {
192192
const lapse = Date.now() - start;
193193
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_SPLIT_KILL_EVENT), 'third fetch retry due to SPLIT_KILL event');
194194

src/__tests__/browserSuites/push-synchronization.spec.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ export function testSynchronization(fetchMock, assert) {
278278
});
279279

280280
// sync all after SSE opened
281-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function (url, opts) {
281+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function (url, opts) {
282282
const lapse = Date.now() - start;
283283
assert.true(nearlyEqual(lapse, MILLIS_SSE_OPEN), 'sync after SSE connection is opened');
284284
if (hasNoCacheHeader(opts)) assert.fail('request must not include `Cache-Control` header');
@@ -290,13 +290,13 @@ export function testSynchronization(fetchMock, assert) {
290290
});
291291

292292
// fetch due to SPLIT_UPDATE event
293-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=-1'), function (url, opts) {
293+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552620999&rbSince=100'), function (url, opts) {
294294
if (!hasNoCacheHeader(opts)) assert.fail('request must include `Cache-Control` header');
295295
return { status: 200, body: splitChangesMock3 };
296296
});
297297

298298
// fetch due to SPLIT_KILL event
299-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=-1'), function (url, opts) {
299+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552649999&rbSince=100'), function (url, opts) {
300300
if (!hasNoCacheHeader(opts)) assert.fail('request must include `Cache-Control` header');
301301
assert.equal(client.getTreatment('whitelist'), 'not_allowed', 'evaluation with split killed immediately, before fetch is done');
302302
return { status: 200, body: splitChangesMock4 };
@@ -309,7 +309,7 @@ export function testSynchronization(fetchMock, assert) {
309309
});
310310

311311
// sync all after second SSE opened
312-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552650000&rbSince=-1'), function (url, opts) {
312+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552650000&rbSince=100'), function (url, opts) {
313313
const lapse = Date.now() - start;
314314
assert.true(nearlyEqual(lapse, MILLIS_SECOND_SSE_OPEN), 'sync after second SSE connection is opened');
315315
if (hasNoCacheHeader(opts)) assert.fail('request must not include `Cache-Control` header');
@@ -337,7 +337,7 @@ export function testSynchronization(fetchMock, assert) {
337337
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: { ms: { k: [{ n: 'developers' }, { n: 'engineers' }] }, ls: { k: [{ n: 'employees' }, { n: 'splitters' }], cn: 1457552650000 } } }); // target changeNumber
338338

339339
// initial fetch of memberships for other clients + sync all after third SSE opened + 3 unbounded fetch for MEMBERSHIPS_MS_UPDATE + 1 unbounded fetch for MEMBERSHIPS_LS_UPDATE
340-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552650000&rbSince=-1'), { status: 200, body: { ff: { d: [], s: 1457552650000, t: 1457552650000 } } });
340+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=1457552650000&rbSince=100'), { status: 200, body: { ff: { d: [], s: 1457552650000, t: 1457552650000 } } });
341341
fetchMock.get({ url: url(settings, '/memberships/key1'), repeat: 6 }, { status: 200, body: { ms: {} } });
342342
fetchMock.get({ url: url(settings, '/memberships/key3'), repeat: 6 }, { status: 200, body: { ms: { k: [{ n: 'splitters' }] } } });
343343
fetchMock.get({ url: url(settings, `/memberships/${bitmapTrueKey}`), repeat: 5 }, { status: 200, body: { ms: { k: [] } } });

src/__tests__/browserSuites/readiness.spec.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,26 +122,27 @@ export default function (fetchMock, assert) {
122122
/************** Now we will validate the intelligent memberships pausing, which requires lots of code. Related code below. **************/
123123
localStorage.clear();
124124
const membershipsEndpointDelay = 450;
125-
function mockForSegmentsPauseTest(testUrls, startWithSegments = false) {
125+
function mockForSegmentsPauseTest(testUrls, startWithSegments) {
126126
let membershipsHits = 0;
127127

128128
fetchMock.get(new RegExp(`${testUrls.sdk}/memberships/nicolas\\d?%40split.io`), function () { // Mock any memberships call, so we can test with multiple clients.
129129
membershipsHits++;
130130
return new Promise((res) => { setTimeout(() => { res({ status: 200, body: { ms: {} } }); }, membershipsEndpointDelay); });
131131
});
132132
// Now mock the no more updates state
133-
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552669999&rbSince=-1', { status: 200, body: { ff: { d: [], s: 1457552669999, t: 1457552669999 } } });
134133

135134

136135
if (startWithSegments) {
137136
// Adjust since and till so the order is inverted.
138137
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1', { status: 200, body: splitChangesStartWithSegmentsMock });
139138
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552620999&rbSince=-1', { status: 200, body: { ff: { ...splitChangesUpdateWithoutSegmentsMock.ff, s: 1457552620999, t: 1457552649999 } } });
140139
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552649999&rbSince=-1', { status: 200, body: { ff: { ...splitChangesUpdateWithSegmentsMock.ff, s: 1457552649999, t: 1457552669999 } } });
140+
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552669999&rbSince=-1', { status: 200, body: { ff: { d: [], s: 1457552669999, t: 1457552669999 } } });
141141
} else {
142142
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1', { status: 200, body: splitChangesStartWithoutSegmentsMock });
143-
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552620999&rbSince=-1', { status: 200, body: splitChangesUpdateWithSegmentsMock });
144-
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552649999&rbSince=-1', { status: 200, body: splitChangesUpdateWithoutSegmentsMock });
143+
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552620999&rbSince=-1', { status: 200, body: { ff: splitChangesUpdateWithSegmentsMock.ff } });
144+
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552649999&rbSince=-1', { status: 200, body: { ff: splitChangesUpdateWithoutSegmentsMock.ff } });
145+
fetchMock.get(testUrls.sdk + '/splitChanges?s=1.3&since=1457552669999&rbSince=-1', { status: 200, body: { ff: { d: [], s: 1457552669999, t: 1457552669999 } } });
145146
}
146147

147148
return () => membershipsHits;

0 commit comments

Comments
 (0)