Skip to content

Commit 4630068

Browse files
authored
feat: add tests for filterEventsByQuery (#9338)
1 parent ac8d742 commit 4630068

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import type { DeltaEvent } from './client-feature-toggle-delta-types';
2+
import { filterEventsByQuery } from './client-feature-toggle-delta';
3+
4+
describe('filterEventsByQuery', () => {
5+
const mockEvents: DeltaEvent[] = [
6+
{
7+
eventId: 1,
8+
type: 'feature-updated',
9+
feature: {
10+
name: 'test-feature',
11+
project: 'project1',
12+
enabled: true,
13+
},
14+
},
15+
{
16+
eventId: 2,
17+
type: 'feature-updated',
18+
feature: {
19+
name: 'alpha-feature',
20+
project: 'project2',
21+
enabled: true,
22+
},
23+
},
24+
{
25+
eventId: 3,
26+
type: 'feature-removed',
27+
featureName: 'beta-feature',
28+
project: 'project3',
29+
},
30+
{
31+
eventId: 4,
32+
type: 'segment-updated',
33+
segment: { id: 1, name: 'my-segment', constraints: [] },
34+
},
35+
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
36+
];
37+
test('filters events based on eventId', () => {
38+
const requiredRevisionId = 2;
39+
const result = filterEventsByQuery(
40+
mockEvents,
41+
requiredRevisionId,
42+
['project3'],
43+
'',
44+
);
45+
expect(result).toEqual([
46+
{
47+
eventId: 3,
48+
type: 'feature-removed',
49+
featureName: 'beta-feature',
50+
project: 'project3',
51+
},
52+
{
53+
eventId: 4,
54+
type: 'segment-updated',
55+
segment: { id: 1, name: 'my-segment', constraints: [] },
56+
},
57+
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
58+
]);
59+
});
60+
61+
test('returns all projects', () => {
62+
const result = filterEventsByQuery(mockEvents, 0, ['*'], '');
63+
expect(result).toEqual(mockEvents);
64+
});
65+
66+
test('filters by name prefix', () => {
67+
const result = filterEventsByQuery(
68+
mockEvents,
69+
0,
70+
['project1', 'project2'],
71+
'alpha',
72+
);
73+
expect(result).toEqual([
74+
{
75+
eventId: 2,
76+
type: 'feature-updated',
77+
feature: {
78+
name: 'alpha-feature',
79+
project: 'project2',
80+
enabled: true,
81+
},
82+
},
83+
{
84+
eventId: 4,
85+
type: 'segment-updated',
86+
segment: { id: 1, name: 'my-segment', constraints: [] },
87+
},
88+
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
89+
]);
90+
});
91+
92+
test('filters by project list', () => {
93+
const result = filterEventsByQuery(mockEvents, 0, ['project3'], 'beta');
94+
expect(result).toEqual([
95+
{
96+
eventId: 3,
97+
type: 'feature-removed',
98+
featureName: 'beta-feature',
99+
project: 'project3',
100+
},
101+
{
102+
eventId: 4,
103+
type: 'segment-updated',
104+
segment: { id: 1, name: 'my-segment', constraints: [] },
105+
},
106+
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
107+
]);
108+
});
109+
});

0 commit comments

Comments
 (0)