From 5b1593ed7808a77bb787777fdd443af753c63205 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Thu, 10 Sep 2026 21:34:42 -0300 Subject: [PATCH] test(api): reject inspection context changes after creation --- .../test/unit/inspection-visits-dto.test.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/api-v3/test/unit/inspection-visits-dto.test.ts b/api-v3/test/unit/inspection-visits-dto.test.ts index 98f979d..da91401 100644 --- a/api-v3/test/unit/inspection-visits-dto.test.ts +++ b/api-v3/test/unit/inspection-visits-dto.test.ts @@ -7,6 +7,7 @@ import { ChangeInspectionVisitStatusDto } from '../../src/inspection-visits/dto/ import { CreateInspectionVisitDto } from '../../src/inspection-visits/dto/create-inspection-visit.dto'; import { ReplaceInspectionVisitAssetsDto } from '../../src/inspection-visits/dto/replace-inspection-visit-assets.dto'; import { ReplaceInspectionVisitTeamDto } from '../../src/inspection-visits/dto/replace-inspection-visit-team.dto'; +import { UpdateInspectionVisitDto } from '../../src/inspection-visits/dto/update-inspection-visit.dto'; const AREA_ID = '16e54e65-60cf-4739-b0d1-ccdd904fbfd5'; const COMPANY_ID = 'ce96211d-ac15-4421-8868-4185323aff61'; @@ -25,6 +26,25 @@ test('visit DTO accepts only the minimum planning data required for quick creati assert.equal(dto.leadInspectorUserId, USER_ID); }); +test('visit update DTO keeps Area, Yacimiento and Operadora immutable after creation', async () => { + const contextAttempt = plainToInstance(UpdateInspectionVisitDto, { + operationalAreaId: AREA_ID, + scopeAssetId: AREA_ID, + operatorCompanyId: COMPANY_ID, + }); + const errors = await validate(contextAttempt); + assert.equal(errors.some((error) => error.property === 'operationalAreaId'), true); + assert.equal(errors.some((error) => error.property === 'scopeAssetId'), true); + assert.equal(errors.some((error) => error.property === 'operatorCompanyId'), true); + + const ordinaryUpdate = plainToInstance(UpdateInspectionVisitDto, { + objective: 'Control preventivo programado', + plannedStartAt: '2026-09-17T12:00:00.000Z', + instructions: 'Coordinar ingreso con la Operadora.', + }); + assert.deepEqual(await validate(ordinaryUpdate), []); +}); + test('asset and team DTOs reject duplicate references', async () => { const assets = Object.assign(new ReplaceInspectionVisitAssetsDto(), { assetIds: [AREA_ID, AREA_ID],