74 lines
1.9 KiB
TypeScript
74 lines
1.9 KiB
TypeScript
import { describe, expect, test } from 'vitest';
|
|
import { DATA_TYPE, OPERATORS } from './constants';
|
|
import {
|
|
parseSessionPropertyFilters,
|
|
parseUniversalEventPropertyFilters,
|
|
serializeSessionPropertyFilters,
|
|
serializeUniversalEventPropertyFilters,
|
|
} from './params';
|
|
|
|
describe('session property filter params', () => {
|
|
test('serializes and parses session property filters', () => {
|
|
const filters = [
|
|
{
|
|
propertyName: 'user.id',
|
|
dataType: DATA_TYPE.string,
|
|
operator: OPERATORS.equals,
|
|
value: 'abc.123,xyz',
|
|
},
|
|
{
|
|
propertyName: 'created at',
|
|
dataType: DATA_TYPE.date,
|
|
operator: OPERATORS.before,
|
|
value: '2026-07-01',
|
|
},
|
|
];
|
|
|
|
const params = serializeSessionPropertyFilters(filters);
|
|
|
|
expect(params).toEqual({
|
|
spf0: '1.eq.user%2Eid.abc.123,xyz',
|
|
spf1: '4.bf.created%20at.2026-07-01',
|
|
});
|
|
expect(parseSessionPropertyFilters(params)).toEqual(filters);
|
|
});
|
|
|
|
test('ignores malformed session property filters', () => {
|
|
expect(
|
|
parseSessionPropertyFilters({
|
|
spf0: 'eq.user%2Eid.value',
|
|
spf1: '1.unknown.email.value',
|
|
spf2: '1.eq',
|
|
}),
|
|
).toEqual([]);
|
|
});
|
|
|
|
test('serializes and parses universal event property filters', () => {
|
|
const filters = [
|
|
{
|
|
propertyName: 'plan.id',
|
|
dataType: DATA_TYPE.string,
|
|
operator: OPERATORS.equals,
|
|
value: 'pro,team',
|
|
},
|
|
];
|
|
|
|
const params = serializeUniversalEventPropertyFilters(filters);
|
|
|
|
expect(params).toEqual({
|
|
epf0: '1.eq.plan%2Eid.pro,team',
|
|
});
|
|
expect(parseUniversalEventPropertyFilters(params)).toEqual(filters);
|
|
});
|
|
|
|
test('ignores malformed universal event property filters', () => {
|
|
expect(
|
|
parseUniversalEventPropertyFilters({
|
|
epf0: 'eq.plan%2Eid.value',
|
|
epf1: '1.unknown.email.value',
|
|
epf2: '1.eq',
|
|
}),
|
|
).toEqual([]);
|
|
});
|
|
});
|