refactor(api): group public tag filters
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import { plainToInstance } from 'class-transformer';
|
||||
import { validate } from 'class-validator';
|
||||
import {
|
||||
PublicQueryGoodDto,
|
||||
PublicTagFilterDto,
|
||||
} from './public-query-good.dto';
|
||||
|
||||
describe('PublicQueryGoodDto', () => {
|
||||
it('parses tags from a JSON query parameter into nested DTOs', async () => {
|
||||
const dto = plainToInstance(PublicQueryGoodDto, {
|
||||
tags: JSON.stringify([
|
||||
{ tagGroupId: '1', tagIds: ['11', '12'] },
|
||||
{ tagGroupId: '2', tagIds: ['25'] },
|
||||
]),
|
||||
});
|
||||
|
||||
expect(dto.tags).toHaveLength(2);
|
||||
expect(dto.tags?.[0]).toBeInstanceOf(PublicTagFilterDto);
|
||||
expect(dto.tags?.[0]).toEqual({
|
||||
tagGroupId: '1',
|
||||
tagIds: ['11', '12'],
|
||||
});
|
||||
await expect(validate(dto)).resolves.toHaveLength(0);
|
||||
});
|
||||
|
||||
it('rejects malformed group and tag ids', async () => {
|
||||
const dto = plainToInstance(PublicQueryGoodDto, {
|
||||
tags: JSON.stringify([
|
||||
{ tagGroupId: 'craft', tagIds: ['11', 'bad'] },
|
||||
]),
|
||||
});
|
||||
|
||||
expect(await validate(dto)).not.toHaveLength(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user