import assert from 'node:assert/strict'; import test from 'node:test'; import { plainToInstance } from 'class-transformer'; import { validate } from 'class-validator'; import { ListAssetVersionsQueryDto } from '../../src/asset-master/dto/list-asset-versions-query.dto'; import { AssetVersionChangeType } from '../../src/database/entities'; test('asset history filters accept pagination, dates and known change types', async () => { const dto = plainToInstance(ListAssetVersionsQueryDto, { page: '2', pageSize: '50', search: ' ACT-001 ', changeType: AssetVersionChangeType.GEOMETRY_UPDATED, from: '2026-08-01T00:00:00.000Z', }); assert.deepEqual(await validate(dto), []); assert.equal(dto.page, 2); assert.equal(dto.pageSize, 50); assert.equal(dto.search, 'ACT-001'); }); test('asset history filters reject invalid pages, dates and change types', async () => { const dto = plainToInstance(ListAssetVersionsQueryDto, { page: '0', pageSize: '500', changeType: 'DELETED', to: 'fecha-invalida', }); const properties = new Set((await validate(dto)).map((error) => error.property)); assert.equal(properties.has('page'), true); assert.equal(properties.has('pageSize'), true); assert.equal(properties.has('changeType'), true); assert.equal(properties.has('to'), true); });