Files
dh-inspeccion-v2/api-v3/test/unit/asset-media-dto.test.ts
T

35 lines
1.2 KiB
TypeScript

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);
});