import assert from 'node:assert/strict'; import test from 'node:test'; import { plainToInstance } from 'class-transformer'; import { validate } from 'class-validator'; import { CreateAssetMediaDto } from '../../src/asset-master/dto/create-asset-media.dto'; import { AssetMediaKind } from '../../src/database/entities'; test('multipart media metadata transforms valid numeric coordinates', async () => { const dto = plainToInstance(CreateAssetMediaDto, { kind: AssetMediaKind.PHOTO, title: 'Cabezal del pozo', capturedAt: '2026-08-14T12:00:00.000Z', latitude: '-32.889500', longitude: '-68.845800', accuracyM: '3.250', }); assert.deepEqual(await validate(dto), []); assert.equal(dto.latitude, -32.8895); assert.equal(dto.longitude, -68.8458); assert.equal(dto.accuracyM, 3.25); }); test('media metadata rejects unknown kinds and coordinate ranges', async () => { const dto = plainToInstance(CreateAssetMediaDto, { kind: 'VIDEO', latitude: '91', longitude: '-181', }); const properties = new Set((await validate(dto)).map((error) => error.property)); assert.equal(properties.has('kind'), true); assert.equal(properties.has('latitude'), true); assert.equal(properties.has('longitude'), true); });