1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-04-10 01:16:39 +02:00

feat: add tests for filterEventsByQuery (#9338)

This commit is contained in:
Jaanus Sellin 2025-02-20 14:52:01 +02:00 committed by GitHub
parent ac8d742e5f
commit 4630068b0a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,109 @@
import type { DeltaEvent } from './client-feature-toggle-delta-types';
import { filterEventsByQuery } from './client-feature-toggle-delta';
describe('filterEventsByQuery', () => {
const mockEvents: DeltaEvent[] = [
{
eventId: 1,
type: 'feature-updated',
feature: {
name: 'test-feature',
project: 'project1',
enabled: true,
},
},
{
eventId: 2,
type: 'feature-updated',
feature: {
name: 'alpha-feature',
project: 'project2',
enabled: true,
},
},
{
eventId: 3,
type: 'feature-removed',
featureName: 'beta-feature',
project: 'project3',
},
{
eventId: 4,
type: 'segment-updated',
segment: { id: 1, name: 'my-segment', constraints: [] },
},
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
];
test('filters events based on eventId', () => {
const requiredRevisionId = 2;
const result = filterEventsByQuery(
mockEvents,
requiredRevisionId,
['project3'],
'',
);
expect(result).toEqual([
{
eventId: 3,
type: 'feature-removed',
featureName: 'beta-feature',
project: 'project3',
},
{
eventId: 4,
type: 'segment-updated',
segment: { id: 1, name: 'my-segment', constraints: [] },
},
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
]);
});
test('returns all projects', () => {
const result = filterEventsByQuery(mockEvents, 0, ['*'], '');
expect(result).toEqual(mockEvents);
});
test('filters by name prefix', () => {
const result = filterEventsByQuery(
mockEvents,
0,
['project1', 'project2'],
'alpha',
);
expect(result).toEqual([
{
eventId: 2,
type: 'feature-updated',
feature: {
name: 'alpha-feature',
project: 'project2',
enabled: true,
},
},
{
eventId: 4,
type: 'segment-updated',
segment: { id: 1, name: 'my-segment', constraints: [] },
},
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
]);
});
test('filters by project list', () => {
const result = filterEventsByQuery(mockEvents, 0, ['project3'], 'beta');
expect(result).toEqual([
{
eventId: 3,
type: 'feature-removed',
featureName: 'beta-feature',
project: 'project3',
},
{
eventId: 4,
type: 'segment-updated',
segment: { id: 1, name: 'my-segment', constraints: [] },
},
{ eventId: 5, type: 'segment-removed', segmentId: 2 },
]);
});
});