Skip to content

Commit aa08ce9

Browse files
Add tests
1 parent 469c4ad commit aa08ce9

File tree

3 files changed

+59
-6
lines changed

3 files changed

+59
-6
lines changed

e2e/synchronizer.test.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,14 @@ describe('Synchronizer e2e tests', () => {
116116
expect(itemsSetB.sort()).toEqual(['TEST_DOC', 'TEST_MATIAS']);
117117
expect(itemsInexistentSet).toEqual([]);
118118
});
119+
120+
test('saves 1 rule-based segment', async () => {
121+
const ruleBasedSegments = await _redisWrapper.getKeysByPrefix(`${REDIS_PREFIX}.rbsegment.*`);
122+
expect(ruleBasedSegments).toHaveLength(1);
123+
124+
expect(await _redisWrapper.get(`${REDIS_PREFIX}.rbsegments.till`)).toBe('100');
125+
});
126+
119127
});
120128

121129
describe('Runs SDK Consumer with DEBUG impressions mode, and', () => {
@@ -144,7 +152,7 @@ describe('Synchronizer e2e tests', () => {
144152

145153
describe('Runs Synchronizer a [SECOND] time and', () => {
146154
beforeAll(async () => {
147-
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346271&rbSince=-1', { status: 200, body: responseMocks.splitChanges[2] });
155+
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346271&rbSince=100', { status: 200, body: responseMocks.splitChanges[2] });
148156
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/test_maldo?since=1589906133231', { status: 200, body: responseMocks.segmentChanges[3] });
149157
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/Lucas_Segments_Tests?since=1617053238061', { status: 200, body: responseMocks.segmentChanges[6] });
150158

@@ -224,7 +232,7 @@ describe('Synchronizer e2e tests', () => {
224232
});
225233

226234
test('Run Synchronizer and check that data was popped from Redis and sent to Split BE', async () => {
227-
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346272&rbSince=-1', { status: 200, body: responseMocks.splitChanges[3] });
235+
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346272&rbSince=100', { status: 200, body: responseMocks.splitChanges[3] });
228236
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/test_maldo?since=1589906133231', { status: 200, body: responseMocks.segmentChanges[3] });
229237
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/Lucas_Segments_Tests?since=1617053238061', { status: 200, body: responseMocks.segmentChanges[6] });
230238

@@ -272,7 +280,7 @@ describe('Synchronizer e2e tests', () => {
272280
});
273281

274282
test('Run Synchronizer and check that data was popped from Redis and sent to Split BE', async () => {
275-
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346272&rbSince=-1', { status: 200, body: responseMocks.splitChanges[3] });
283+
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346272&rbSince=100', { status: 200, body: responseMocks.splitChanges[3] });
276284
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/test_maldo?since=1589906133231', { status: 200, body: responseMocks.segmentChanges[3] });
277285
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/Lucas_Segments_Tests?since=1617053238061', { status: 200, body: responseMocks.segmentChanges[6] });
278286

@@ -402,7 +410,7 @@ describe('Synchronizer e2e tests - OPTIMIZED impressions mode & Flag Sets filter
402410

403411
describe('Synchronizer runs a second time, and', () => {
404412
beforeAll(async () => {
405-
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346271&rbSince=-1&sets=set_b', { status: 200, body: responseMocks.splitChanges[2] });
413+
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346271&rbSince=100&sets=set_b', { status: 200, body: responseMocks.splitChanges[2] });
406414
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/test_maldo?since=1589906133231', { status: 200, body: responseMocks.segmentChanges[3] });
407415

408416
await _synchronizer.execute();
@@ -460,7 +468,7 @@ describe('Synchronizer e2e tests - OPTIMIZED impressions mode & Flag Sets filter
460468
},
461469
});
462470

463-
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346272&rbSince=-1&sets=set_b', { status: 500 });
471+
fetchMock.getOnce(SERVER_MOCK_URL + '/splitChanges?s=1.3&since=1619720346272&rbSince=100&sets=set_b', { status: 500 });
464472
fetchMock.getOnce(SERVER_MOCK_URL + '/segmentChanges/test_maldo?since=1589906133231', { status: 200, body: responseMocks.segmentChanges[3] });
465473

466474
expect(await synchronizer.execute()).toBe(false);

e2e/utils/responseMocks.json

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,51 @@
371371
],
372372
"s": -1,
373373
"t": 1619720346271
374+
},
375+
"rbs": {
376+
"s": -1,
377+
"t": 100,
378+
"d": [
379+
{
380+
"changeNumber": 5,
381+
"name": "test_rule_based_segment",
382+
"status": "ACTIVE",
383+
"trafficTypeName": "user",
384+
"excluded": {
385+
"keys": [
386+
"mauro@split.io",
387+
"gaston@split.io"
388+
],
389+
"segments": [
390+
{
391+
"type": "standard",
392+
"name": "test_maldo"
393+
}
394+
]
395+
},
396+
"conditions": [
397+
{
398+
"matcherGroup": {
399+
"combiner": "AND",
400+
"matchers": [
401+
{
402+
"keySelector": {
403+
"trafficType": "user"
404+
},
405+
"matcherType": "ENDS_WITH",
406+
"negate": false,
407+
"whitelistMatcherData": {
408+
"whitelist": [
409+
"@split.io"
410+
]
411+
}
412+
}
413+
]
414+
}
415+
}
416+
]
417+
}
418+
]
374419
}
375420
},
376421
{

src/synchronizers/SplitsSynchronizer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export class SplitsSynchronizer {
142142

143143
const registeredSegments = this._inMemoryStorage.segments.getRegisteredSegments();
144144

145-
// @todo: Update segment definitions and change number
145+
// @todo: Update rule-based segments, segment definitions and change number
146146
if (registeredSegments.length > 0)
147147
await this._storage.segments.registerSegments(registeredSegments);
148148
} catch (error) {

0 commit comments

Comments
 (0)