package jnpf.elnService.impl;
|
|
import jnpf.elnEntity.runtime.ElnRecordEntity;
|
import jnpf.elnEntity.runtime.ElnRecordRevisionEntity;
|
import jnpf.elnEntity.runtime.ElnRecordVos;
|
import jnpf.elnMapper.ElnRecordMapper;
|
import jnpf.elnMapper.ElnRecordRevisionMapper;
|
import jnpf.exception.DataException;
|
import org.junit.Assert;
|
import org.junit.Test;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import java.lang.reflect.Constructor;
|
|
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertTrue;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
import static org.mockito.Mockito.when;
|
|
public class ElnRecordQueryServiceImplTest {
|
|
@Test
|
public void marksProductionConstructorForSpringInjection() throws Exception {
|
Constructor<ElnRecordQueryServiceImpl> constructor = ElnRecordQueryServiceImpl.class
|
.getConstructor(ElnRecordMapper.class, ElnRecordRevisionMapper.class);
|
|
Assert.assertNotNull(constructor.getAnnotation(Autowired.class));
|
}
|
|
@Test
|
public void returnsCurrentRevisionWithoutWritingAnything() {
|
ElnRecordMapper recordMapper = mock(ElnRecordMapper.class);
|
ElnRecordRevisionMapper revisionMapper = mock(ElnRecordRevisionMapper.class);
|
ElnRecordEntity record = record("record-1", "item-1", "revision-2", "tenant-1");
|
ElnRecordRevisionEntity revision = revision("revision-2", "record-1", "tenant-1");
|
when(recordMapper.selectLiveByTestWorkItem("tenant-1", "item-1")).thenReturn(record);
|
when(revisionMapper.selectById("revision-2")).thenReturn(revision);
|
|
ElnRecordVos.Created result = new ElnRecordQueryServiceImpl(
|
recordMapper, revisionMapper, () -> "tenant-1").getByTestWorkItem("item-1");
|
|
assertEquals("record-1", result.getRecordId());
|
assertEquals("revision-2", result.getRevisionId());
|
assertEquals("record-1.docx", result.getDocument().getName());
|
assertEquals("file-2.docx", result.getDocument().getFileId());
|
assertEquals("docx", result.getDocument().getFileExtension());
|
assertTrue(result.isExisting());
|
verify(recordMapper).selectLiveByTestWorkItem("tenant-1", "item-1");
|
verify(revisionMapper).selectById("revision-2");
|
verifyNoMoreInteractions(recordMapper, revisionMapper);
|
}
|
|
@Test(expected = DataException.class)
|
public void rejectsMissingRecordWithoutCreatingOne() {
|
ElnRecordMapper recordMapper = mock(ElnRecordMapper.class);
|
ElnRecordRevisionMapper revisionMapper = mock(ElnRecordRevisionMapper.class);
|
when(recordMapper.selectLiveByTestWorkItem("tenant-1", "item-1")).thenReturn(null);
|
|
try {
|
new ElnRecordQueryServiceImpl(recordMapper, revisionMapper, () -> "tenant-1")
|
.getByTestWorkItem("item-1");
|
} finally {
|
verify(recordMapper).selectLiveByTestWorkItem("tenant-1", "item-1");
|
verifyNoMoreInteractions(recordMapper, revisionMapper);
|
}
|
}
|
|
@Test(expected = DataException.class)
|
public void rejectsRevisionOutsideCurrentTenant() {
|
ElnRecordMapper recordMapper = mock(ElnRecordMapper.class);
|
ElnRecordRevisionMapper revisionMapper = mock(ElnRecordRevisionMapper.class);
|
when(recordMapper.selectLiveByTestWorkItem("tenant-1", "item-1"))
|
.thenReturn(record("record-1", "item-1", "revision-2", "tenant-1"));
|
when(revisionMapper.selectById("revision-2"))
|
.thenReturn(revision("revision-2", "record-1", "tenant-2"));
|
|
new ElnRecordQueryServiceImpl(recordMapper, revisionMapper, () -> "tenant-1")
|
.getByTestWorkItem("item-1");
|
}
|
|
private static ElnRecordEntity record(
|
String id, String testWorkItemId, String revisionId, String tenantId) {
|
ElnRecordEntity record = new ElnRecordEntity();
|
record.setId(id);
|
record.setJianyanXiangId(testWorkItemId);
|
record.setDangqianXiudingId(revisionId);
|
record.setFTenantId(tenantId);
|
record.setFDeleteMark(0);
|
return record;
|
}
|
|
private static ElnRecordRevisionEntity revision(
|
String id, String recordId, String tenantId) {
|
ElnRecordRevisionEntity revision = new ElnRecordRevisionEntity();
|
revision.setId(id);
|
revision.setDianziJiluId(recordId);
|
revision.setJiluWendang("file-2.docx");
|
revision.setFTenantId(tenantId);
|
revision.setFDeleteMark(0);
|
return revision;
|
}
|
}
|