-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathevaluations-impressionsDisabled.spec.js
More file actions
77 lines (64 loc) · 3.34 KB
/
Copy pathevaluations-impressionsDisabled.spec.js
File metadata and controls
77 lines (64 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import { SplitFactory } from '../..';
import { settingsFactory } from '../../settings';
import splitChangesMock1 from '../mocks/splitchanges.since.-1.json';
import { url } from '../testUtils';
const baseUrls = {
sdk: 'https://sdk.baseurl/evaluationsImpressionsDisabledSuite',
events: 'https://events.baseurl/evaluationsImpressionsDisabledSuite',
telemetry: 'https://telemetry.baseurl/evaluationsImpressionsDisabledSuite'
};
const settings = settingsFactory({
core: {
key: '<fake id>'
},
urls: baseUrls,
streamingEnabled: false
});
const config = {
core: {
authorizationKey: '<fake-token>'
},
urls: baseUrls,
streamingEnabled: false
};
export default async function (fetchMock, assert) {
assert.test('Evaluations / impressionsDisabled option', async t => {
// Mocking split changes
fetchMock.getOnce(url(settings, '/splitChanges?s=1.3&since=-1&rbSince=-1'), { status: 200, body: splitChangesMock1 });
fetchMock.get(new RegExp(`${url(settings, '/segmentChanges/')}.*`), { status: 200, body: { since: 10, till: 10, name: 'segmentName', added: [], removed: [] } });
fetchMock.post(url(settings, '/v1/keys/ss'), 200);
fetchMock.post(url(settings, '/v1/metrics/usage'), 200);
fetchMock.post(url(settings, '/v1/metrics/config'), 200);
// Mock default telemetry URLs as fallback
fetchMock.post('https://telemetry.split.io/api/v1/keys/ss', 200);
fetchMock.post('https://telemetry.split.io/api/v1/metrics/usage', 200);
fetchMock.post('https://telemetry.split.io/api/v1/metrics/usage', 200);
fetchMock.post('https://telemetry.split.io/api/v1/metrics/config', 200);
fetchMock.post(url(settings, '/testImpressions/bulk'), 200);
fetchMock.post(url(settings, '/testImpressions/count'), 200);
const splitio = SplitFactory(config);
const client = splitio.client();
await client.ready();
// getTreatment
t.equal(client.getTreatment('emi@split.io', 'split_with_config', { impressionsDisabled: true }), 'o.n', 'getTreatment with impressionsDisabled: true returns correct treatment');
t.equal(client.getTreatment('emi@split.io', 'split_with_config', { impressionsDisabled: false }), 'o.n', 'getTreatment with impressionsDisabled: false returns correct treatment');
// getTreatments
t.deepEqual(client.getTreatments('emi@split.io', ['split_with_config', 'whitelist'], { impressionsDisabled: true }), {
split_with_config: 'o.n',
whitelist: 'not_allowed'
}, 'getTreatments with impressionsDisabled: true returns correct treatments');
// getTreatmentWithConfig
const expectedConfig = '{"color":"brown","dimensions":{"height":12,"width":14},"text":{"inner":"click me"}}';
t.deepEqual(client.getTreatmentWithConfig('emi@split.io', 'split_with_config', { impressionsDisabled: true }), {
treatment: 'o.n',
config: expectedConfig
}, 'getTreatmentWithConfig with impressionsDisabled: true returns correct treatment and config');
// getTreatmentsWithConfig
t.deepEqual(client.getTreatmentsWithConfig('emi@split.io', ['split_with_config', 'whitelist'], { impressionsDisabled: true }), {
split_with_config: { treatment: 'o.n', config: expectedConfig },
whitelist: { treatment: 'not_allowed', config: null }
}, 'getTreatmentsWithConfig with impressionsDisabled: true returns correct treatments and configs');
await client.destroy();
t.end();
});
}