package jnpf.dmsService;
|
import jnpf.dmsEntity.fenfa.DmsWenjianChongdaFasong;
|
import jnpf.dmsEntity.fenfa.form.DmsWenjianChongdaForm;
|
import jnpf.dmsEntity.preview.vo.DmsFilePageCountVO;
|
import jnpf.exception.DataException;
|
import org.junit.jupiter.api.Test;
|
import java.util.UUID;
|
import java.io.IOException;
|
import static org.junit.jupiter.api.Assertions.*;
|
import static org.mockito.Mockito.*;
|
class DmsWenjianChongdaPlanServiceTest {
|
final DmsWenjianChongdaService reprints=mock(DmsWenjianChongdaService.class);
|
final DmsFilePageCountService pages=mock(DmsFilePageCountService.class);
|
final DmsWenjianChongdaPlanService service=new DmsWenjianChongdaPlanService(reprints,pages);
|
final DmsWenjianChongdaForm form=new DmsWenjianChongdaForm();
|
DmsWenjianChongdaFasong open() throws Exception {
|
var a=new DmsWenjianChongdaFasong();a.setState("OPEN");a.setFileVersionId(UUID.randomUUID().toString());
|
when(reprints.status(form)).thenReturn(a);return a;
|
}
|
@Test void countsFrozenVersionBeforeLockedPlanValidation() throws Exception {
|
var a=open();var result=new DmsFilePageCountVO();result.setFileVersionId(UUID.fromString(a.getFileVersionId()));result.setPageCount(12);
|
when(pages.getPageCount(result.getFileVersionId())).thenReturn(result);when(reprints.plan(form,a.getFileVersionId(),12)).thenReturn(a);
|
assertSame(a,service.plan(form));var order=inOrder(reprints,pages);
|
order.verify(reprints).status(form);order.verify(pages).getPageCount(result.getFileVersionId());order.verify(reprints).plan(form,a.getFileVersionId(),12);
|
}
|
@Test void existingPlanAndTerminalStateDoNotRecount() throws Exception {
|
var a=open();a.setPageCount(2);assertSame(a,service.plan(form));a.setPageCount(null);a.setState("CANCELLED");assertSame(a,service.plan(form));verifyNoInteractions(pages);
|
}
|
@Test void mismatchedVersionCannotPersistPlan() throws Exception {
|
var a=open();var result=new DmsFilePageCountVO();result.setFileVersionId(UUID.randomUUID());result.setPageCount(2);
|
when(pages.getPageCount(UUID.fromString(a.getFileVersionId()))).thenReturn(result);
|
assertThrows(DataException.class,()->service.plan(form));verify(reprints,never()).plan(any(),anyString(),anyInt());
|
}
|
@Test void conversionFailurePreservesOriginalAttempt() throws Exception {
|
var a=open();when(pages.getPageCount(UUID.fromString(a.getFileVersionId()))).thenThrow(new IOException("offline"));
|
assertThrows(DataException.class,()->service.plan(form));verify(reprints,never()).plan(any(),anyString(),anyInt());
|
}
|
}
|