1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/src/lib/openapi/spec/admin-features-query-schema.test.ts
Christopher Kolstad eafba10cac
feature: add query support to features endpoint (#2693)
## About the changes
The deprecated /api/admin/features endpoint supported querying with tag
and namePrefix parameters.

This PR adds this functionality to
/api/admin/projects/<project>/features as well, allowing to replicate
queries that used to work.

Closes #2306

### Important files
src/lib/db/feature-strategy-store.ts
src/test/e2e/stores/feature-strategies-store.e2e.test.ts

## Discussion points
I'm extending our query parameters support for
/api/admin/projects/<projectId>/features endpoint. This will be
reflected in our open-api spec, so I also made an
adminFeaturesQuerySchema for this.

Also, very open for something similar to what we did for the modifyQuery
for the archived parameter, but couldn't come up with a good way to
support subselects using the query builder, it just ended up blowing the
stack. If anyone has a suggestion, I'm all ears.

Co-authored-by: Thomas Heartman <thomas@getunleash.ai>
2022-12-16 12:05:18 +01:00

32 lines
926 B
TypeScript

import { validateSchema } from '../validate';
import { AdminFeaturesQuerySchema } from './admin-features-query-schema';
test('adminFeaturesQuerySchema empty', () => {
const data: AdminFeaturesQuerySchema = {};
expect(
validateSchema('#/components/schemas/adminFeaturesQuerySchema', data),
).toBeUndefined();
});
test('adminFeatureQuerySchema all fields', () => {
const data: AdminFeaturesQuerySchema = {
tag: ['simple:some-tag', 'simple:some-other-tag'],
namePrefix: 'some-prefix',
};
expect(
validateSchema('#/components/schemas/adminFeaturesQuerySchema', data),
).toBeUndefined();
});
test('pattern validation should deny invalid tags', () => {
const data: AdminFeaturesQuerySchema = {
tag: ['something', 'somethingelse'],
};
expect(
validateSchema('#/components/schemas/adminFeaturesQuerySchema', data),
).toBeDefined();
});