Skip to content

Commit 70a1bac

Browse files
Update tests and mocks
1 parent e2dc151 commit 70a1bac

File tree

72 files changed

+4109
-3940
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+4109
-3940
lines changed

src/__tests__/browserSuites/evaluations-semver.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ const config = {
2525

2626
export default async function (fetchMock, assert) {
2727

28-
fetchMock.getOnce(config.urls.sdk + '/splitChanges?s=1.2&since=-1', { status: 200, body: splitChangesMock1 });
29-
fetchMock.getOnce(config.urls.sdk + '/splitChanges?s=1.2&since=1675259356568', { status: 200, body: { splits: [], since: 1675259356568, till: 1675259356568 } });
28+
fetchMock.getOnce(config.urls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1', { status: 200, body: splitChangesMock1 });
29+
fetchMock.getOnce(config.urls.sdk + '/splitChanges?s=1.3&since=1675259356568&rbSince=-1', { status: 200, body: { ff: { d: [], s: 1675259356568, t: 1675259356568 } } });
3030
fetchMock.getOnce(config.urls.sdk + '/memberships/emi%40split.io', { status: 200, body: { ms: {} } });
3131
fetchMock.getOnce(config.urls.sdk + '/memberships/2nd', { status: 200, body: { ms: {} } });
3232

src/__tests__/browserSuites/fetch-specific-splits.spec.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ export function fetchSpecificSplits(fetchMock, assert) {
2525
const queryString = queryStrings[i] || '';
2626
let factory;
2727

28-
fetchMock.getOnce(urls.sdk + '/splitChanges?s=1.2&since=-1' + queryString, { status: 200, body: { splits: [], since: -1, till: 1457552620999 } });
29-
fetchMock.getOnce(urls.sdk + '/splitChanges?s=1.2&since=1457552620999' + queryString, { status: 200, body: { splits: [], since: 1457552620999, till: 1457552620999 } });
30-
fetchMock.getOnce(urls.sdk + '/splitChanges?s=1.2&since=1457552620999' + queryString, function () {
28+
fetchMock.getOnce(urls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1' + queryString, { status: 200, body: { ff: { d: [], s: -1, t: 1457552620999 } } });
29+
fetchMock.getOnce(urls.sdk + '/splitChanges?s=1.3&since=1457552620999&rbSince=-1' + queryString, { status: 200, body: { ff: { d: [], s: 1457552620999, t: 1457552620999 } } });
30+
fetchMock.getOnce(urls.sdk + '/splitChanges?s=1.3&since=1457552620999&rbSince=-1' + queryString, function () {
3131
factory.client().destroy().then(() => {
3232
assert.pass(`splitFilters #${i}`);
3333
});
34-
return { status: 200, body: { splits: [], since: 1457552620999, till: 1457552620999 } };
34+
return { status: 200, body: { ff: { d: [], s: 1457552620999, t: 1457552620999 } } };
3535
});
3636
fetchMock.get(urls.sdk + '/memberships/nicolas%40split.io', { status: 200, body: { 'ms': {} } });
3737

@@ -70,8 +70,8 @@ export function fetchSpecificSplitsForFlagSets(fetchMock, assert) {
7070
const queryString = '&sets=4_valid,set_2,set_3,set_ww,set_x';
7171
fetchMock.get(baseUrls.sdk + '/memberships/nicolas%40split.io', { status: 200, body: { 'ms': {} } });
7272

73-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=-1' + queryString, { status: 200, body: { splits: [], since: 1457552620999, till: 1457552620999 }});
74-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1457552620999' + queryString, async function () {
73+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1' + queryString, { status: 200, body: { ff: { d: [], s: 1457552620999, t: 1457552620999 } }});
74+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1457552620999&rbSince=-1' + queryString, async function () {
7575
t.pass('flag set query correctly formed');
7676
t.true(logSpy.calledWithExactly('[WARN] splitio => settings: bySet filter value "set_x " has extra whitespace, trimming.'));
7777
t.true(logSpy.calledWithExactly('[WARN] splitio => settings: you passed invalid+, flag set must adhere to the regular expressions /^[a-z0-9][_a-z0-9]{0,49}$/. This means a flag set must start with a letter or number, be in lowercase, alphanumeric and have a max length of 50 characters. invalid+ was discarded.'));

src/__tests__/browserSuites/flag-sets.spec.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ export default function flagSets(fetchMock, t) {
2424
let manager;
2525

2626
// Receive split change with 1 split belonging to set_1 & set_2 and one belonging to set_3
27-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=-1&sets=set_1,set_2', function () {
27+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1&sets=set_1,set_2', function () {
2828
return { status: 200, body: splitChange2};
2929
});
3030

3131
// Receive split change with 1 split belonging to set_1 only
32-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602796638344&sets=set_1,set_2', function () {
32+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602796638344&rbSince=-1&sets=set_1,set_2', function () {
3333
// stored feature flags before update
3434
const storedFlags = manager.splits();
3535
assert.true(storedFlags.length === 1, 'only one feature flag should be added');
@@ -41,7 +41,7 @@ export default function flagSets(fetchMock, t) {
4141
});
4242

4343
// Receive split change with 1 split belonging to set_3 only
44-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602797638344&sets=set_1,set_2', function () {
44+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602797638344&rbSince=-1&sets=set_1,set_2', function () {
4545
// stored feature flags before update
4646
const storedFlags = manager.splits();
4747
assert.true(storedFlags.length === 1);
@@ -52,7 +52,7 @@ export default function flagSets(fetchMock, t) {
5252
return { status: 200, body: splitChange0};
5353
});
5454

55-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602798638344&sets=set_1,set_2', async function () {
55+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602798638344&rbSince=-1&sets=set_1,set_2', async function () {
5656
// stored feature flags before update
5757
const storedFlags = manager.splits();
5858
assert.true(storedFlags.length === 0, 'the feature flag should be removed');
@@ -75,12 +75,12 @@ export default function flagSets(fetchMock, t) {
7575
let manager;
7676

7777
// Receive split change with 1 split belonging to set_1 & set_2 and one belonging to set_3
78-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=-1', function () {
78+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1', function () {
7979
return { status: 200, body: splitChange2};
8080
});
8181

8282
// Receive split change with 1 split belonging to set_1 only
83-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602796638344', function () {
83+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602796638344&rbSince=-1', function () {
8484
// stored feature flags before update
8585
const storedFlags = manager.splits();
8686
assert.true(storedFlags.length === 2, 'every feature flag should be added');
@@ -94,7 +94,7 @@ export default function flagSets(fetchMock, t) {
9494
});
9595

9696
// Receive split change with 1 split belonging to set_3 only
97-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602797638344', function () {
97+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602797638344&rbSince=-1', function () {
9898
// stored feature flags before update
9999
const storedFlags = manager.splits();
100100
assert.true(storedFlags.length === 2);
@@ -107,7 +107,7 @@ export default function flagSets(fetchMock, t) {
107107
return { status: 200, body: splitChange0};
108108
});
109109

110-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602798638344', async function () {
110+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602798638344&rbSince=-1', async function () {
111111
// stored feature flags before update
112112
const storedFlags = manager.splits();
113113
assert.true(storedFlags.length === 2);
@@ -137,11 +137,11 @@ export default function flagSets(fetchMock, t) {
137137

138138
fetchMock.get(baseUrls.sdk + '/memberships/nicolas%40split.io', { status: 200, body: { 'ms': {} } });
139139
// Receive split change with 1 split belonging to set_1 & set_2 and one belonging to set_3
140-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=-1&sets=set_1', function () {
140+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1&sets=set_1', function () {
141141
return { status: 200, body: splitChange2};
142142
});
143143

144-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602796638344&sets=set_1', async function () {
144+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602796638344&rbSince=-1&sets=set_1', async function () {
145145
// stored feature flags before update
146146
assert.deepEqual(client.getTreatmentsByFlagSet('set_1'), {workm: 'on'}, 'only the flag in set_1 can be evaluated');
147147
assert.deepEqual(client.getTreatmentsByFlagSet('set_2'), {}, 'only the flag in set_1 can be evaluated');
@@ -174,11 +174,11 @@ export default function flagSets(fetchMock, t) {
174174

175175
fetchMock.get(baseUrls.sdk + '/memberships/nicolas%40split.io', { status: 200, body: { 'ms': {} } });
176176
// Receive split change with 1 split belonging to set_1 & set_2 and one belonging to set_3
177-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=-1', function () {
177+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=-1&rbSince=-1', function () {
178178
return { status: 200, body: splitChange2};
179179
});
180180

181-
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.2&since=1602796638344', async function () {
181+
fetchMock.getOnce(baseUrls.sdk + '/splitChanges?s=1.3&since=1602796638344&rbSince=-1', async function () {
182182
// stored feature flags before update
183183
assert.deepEqual(client.getTreatmentsByFlagSet('set_1'), {workm: 'on'}, 'all flags can be evaluated');
184184
assert.deepEqual(client.getTreatmentsByFlagSet('set_2'), {workm: 'on'}, 'all flags can be evaluated');

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ export default function (fetchMock, assert) {
101101

102102
// Mock GET endpoints before creating the client
103103
const settings = settingsFactory(config);
104-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=-1'), { status: 200, body: splitChangesMock1 });
105-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=1457552620999'), { status: 200, body: { splits: [], since: 1457552620999, till: 1457552620999 } });
104+
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 } } });
106106
fetchMock.getOnce(url(settings, `/memberships/${encodeURIComponent(config.core.key)}`), { status: 200, body: { ms: {} } });
107107

108108
// Init Split client

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ let truncatedTimeFrame;
2424

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.
27-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=-1'), { status: 200, body: splitChangesMock1 });
28-
fetchMock.get(url(settings, '/splitChanges?s=1.2&since=1457552620999'), { status: 200, body: splitChangesMock2 });
27+
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 });
2929
fetchMock.get(url(settings, '/memberships/facundo%40split.io'), { status: 200, body: membershipsFacundo });
3030

3131
const splitio = SplitFactory({

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ const config = {
4141

4242
export default async function (fetchMock, assert) {
4343
// Mocking this specific route to make sure we only get the items we want to test from the handlers.
44-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=-1'), { status: 200, body: splitChangesMock1 });
45-
fetchMock.get(url(settings, '/splitChanges?s=1.2&since=1457552620999'), { status: 200, body: splitChangesMock2 });
44+
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 });
4646
fetchMock.get(url(settings, '/memberships/facundo%40split.io'), { status: 200, body: membershipsFacundo });
4747
fetchMock.get(url(settings, '/memberships/emma%40split.io'), { status: 200, body: membershipsFacundo });
4848

src/__tests__/browserSuites/impressions.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ let truncatedTimeFrame;
2424

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.
27-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=-1'), { status: 200, body: splitChangesMock1 });
28-
fetchMock.get(url(settings, '/splitChanges?s=1.2&since=1457552620999'), { status: 200, body: splitChangesMock2 });
27+
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 });
2929
fetchMock.get(url(settings, '/memberships/facundo%40split.io'), { status: 200, body: membershipsFacundo });
3030

3131
const splitio = SplitFactory({

src/__tests__/browserSuites/manager.spec.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import map from 'lodash/map';
44
import { url } from '../testUtils';
55

66
export default async function (settings, fetchMock, assert) {
7-
fetchMock.getOnce({ url: url(settings, '/splitChanges?s=1.2&since=-1'), overwriteRoutes: true }, { status: 200, body: splitChangesMockReal });
7+
fetchMock.getOnce({ url: url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), overwriteRoutes: true }, { status: 200, body: splitChangesMockReal });
88

99
const mockSplits = splitChangesMockReal;
1010

@@ -29,27 +29,27 @@ export default async function (settings, fetchMock, assert) {
2929

3030
const splitNames = manager.names();
3131

32-
assert.equal(splitNames.length, mockSplits.splits.length, 'The manager.splits() method should return all split names on the factory storage.');
33-
assert.deepEqual(splitNames, map(mockSplits.splits, split => split.name), 'The manager.splits() method should return all split names on the factory storage.');
32+
assert.equal(splitNames.length, mockSplits.ff.d.length, 'The manager.splits() method should return all split names on the factory storage.');
33+
assert.deepEqual(splitNames, map(mockSplits.ff.d, split => split.name), 'The manager.splits() method should return all split names on the factory storage.');
3434

3535
const splitObj = manager.split(splitNames[0]);
3636
const expectedSplitObj = index => ({
37-
'trafficType': mockSplits.splits[index].trafficTypeName,
38-
'name': mockSplits.splits[index].name,
39-
'killed': mockSplits.splits[index].killed,
40-
'changeNumber': mockSplits.splits[index].changeNumber,
41-
'treatments': map(mockSplits.splits[index].conditions[0].partitions, partition => partition.treatment),
42-
'configs': mockSplits.splits[index].configurations || {},
43-
'sets': mockSplits.splits[index].sets || [],
44-
'defaultTreatment': mockSplits.splits[index].defaultTreatment,
37+
'trafficType': mockSplits.ff.d[index].trafficTypeName,
38+
'name': mockSplits.ff.d[index].name,
39+
'killed': mockSplits.ff.d[index].killed,
40+
'changeNumber': mockSplits.ff.d[index].changeNumber,
41+
'treatments': map(mockSplits.ff.d[index].conditions[0].partitions, partition => partition.treatment),
42+
'configs': mockSplits.ff.d[index].configurations || {},
43+
'sets': mockSplits.ff.d[index].sets || [],
44+
'defaultTreatment': mockSplits.ff.d[index].defaultTreatment,
4545
'impressionsDisabled': false
4646
});
4747

4848
assert.equal(manager.split('non_existent'), null, 'Trying to get a manager.split() of a Split that does not exist returns null.');
4949
assert.deepEqual(splitObj, expectedSplitObj(0), 'If we ask for an existent one we receive the expected split view.');
5050

5151
const splitObjects = manager.splits();
52-
assert.equal(splitObjects.length, mockSplits.splits.length, 'The manager.splits() returns the full collection of split views.');
52+
assert.equal(splitObjects.length, mockSplits.ff.d.length, 'The manager.splits() returns the full collection of split views.');
5353
assert.deepEqual(splitObjects[0], expectedSplitObj(0), 'And the split views should match the items of the collection in split view format.');
5454
assert.deepEqual(splitObjects[1], expectedSplitObj(1), 'And the split views should match the items of the collection in split view format.');
5555

src/__tests__/browserSuites/push-corner-cases.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ export function testSplitKillOnReadyFromCache(fetchMock, assert) {
7171
});
7272

7373
// 1 auth request
74-
fetchMock.getOnce(url(settings, `/v2/auth?s=1.2&users=${encodeURIComponent(userKey)}`), { status: 200, body: authPushEnabledNicolas });
74+
fetchMock.getOnce(url(settings, `/v2/auth?s=1.3&users=${encodeURIComponent(userKey)}`), { status: 200, body: authPushEnabledNicolas });
7575
// 2 memberships requests: initial sync and after SSE opened
7676
fetchMock.get({ url: url(settings, '/memberships/nicolas%40split.io'), repeat: 2 }, { status: 200, body: { ms: {} } });
7777

7878
// 2 splitChanges request: initial sync and after SSE opened. Sync after SPLIT_KILL is not performed because SplitsSyncTask is "executing"
79-
fetchMock.getOnce(url(settings, '/splitChanges?s=1.2&since=25'), { status: 200, body: splitChangesMock1 }, { delay: MILLIS_SPLIT_CHANGES_RESPONSE, /* delay response */ });
80-
fetchMock.getOnce(url(settings, `/splitChanges?s=1.2&since=${splitChangesMock1.till}`), { status: 200, body: { splits: [], since: splitChangesMock1.till, till: splitChangesMock1.till } }, { delay: MILLIS_SPLIT_CHANGES_RESPONSE - 100, /* delay response */ });
79+
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=25&rbSince=-1'), { status: 200, body: splitChangesMock1 }, { delay: MILLIS_SPLIT_CHANGES_RESPONSE, /* delay response */ });
80+
fetchMock.getOnce(url(settings, `/splitChanges?s=1.3&since=${splitChangesMock1.ff.t}&rbSince=-1`), { status: 200, body: { ff: { d: [], s: splitChangesMock1.ff.t, t: splitChangesMock1.ff.t } } }, { delay: MILLIS_SPLIT_CHANGES_RESPONSE - 100, /* delay response */ });
8181

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

0 commit comments

Comments
 (0)