package jnpf.dmsService; import jnpf.dmsBusinessOccupancy.BusinessFileOccupancy; import jnpf.dmsEntity.storage.approval.DmsApprovedItem; import jnpf.exception.DataException; import org.junit.jupiter.api.Test; import java.util.*; import static org.junit.jupiter.api.Assertions.*; class DmsBusinessLifecycleCoverageTest { private BusinessFileOccupancy receipt(String number,UUID version) { var row=new BusinessFileOccupancy();row.setFileNumber(number); row.setCenterVersionId(version==null?null:version.toString()); row.setOperation(version==null?"CREATE":"REVISION");return row; } private DmsApprovedItem item(String change,String number,UUID version) { var item=new DmsApprovedItem();item.setChangeType(change);item.setDocumentNo(number); item.setBaseFileVersionId(version);return item; } @Test void completeMixedMainAndRecordSetMatchesWithoutSharingAChainId() { UUID main=UUID.randomUUID(),record=UUID.randomUUID(),removed=UUID.randomUUID(); assertDoesNotThrow(()->DmsBusinessLifecycleGuard.verifySourceCoverage( List.of(receipt("M",main),receipt("R",record),receipt("D",removed),receipt("N",null)), List.of(item("REVISE",null,main),item("REUSE",null,record),item("RETIRE",null,removed),item("CREATE","N",null)))); } @Test void missingExtraDuplicateAndWrongVersionAreRejected() { UUID version=UUID.randomUUID();var receipt=receipt("M",version);var main=item("REVISE",null,version); assertThrows(DataException.class,()->DmsBusinessLifecycleGuard.verifySourceCoverage(List.of(),List.of(main))); assertThrows(DataException.class,()->DmsBusinessLifecycleGuard.verifySourceCoverage(List.of(receipt,receipt("N",null)),List.of(main))); assertThrows(DataException.class,()->DmsBusinessLifecycleGuard.verifySourceCoverage(List.of(receipt),List.of(main,main))); assertThrows(DataException.class,()->DmsBusinessLifecycleGuard.verifySourceCoverage(List.of(receipt),List.of(item("REVISE",null,UUID.randomUUID())))); assertThrows(DataException.class,()->DmsBusinessLifecycleGuard.verifySourceCoverage(List.of(receipt("N",null)),List.of(item("CREATE","X",null)))); } }