package jnpf.elnService.template.impl; import jnpf.elnEntity.template.ElnTemplateBindingEntity; import jnpf.elnEntity.template.ElnTemplateVos; import jnpf.elnMapper.ElnTemplateBindingMapper; import jnpf.elnService.field.ElnTestResultFieldCatalog; import jnpf.elnService.field.ElnTestResultFields; import org.junit.Test; import java.util.Arrays; import java.util.Collections; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class ElnTestResultTemplatePublishValidatorTest { @Test public void requiresBothStableSystemFieldBindings() { ElnTemplateBindingMapper mapper = mock(ElnTemplateBindingMapper.class); ElnTestResultFieldCatalog catalog = mock(ElnTestResultFieldCatalog.class); when(mapper.selectList(any())).thenReturn(Collections.singletonList(binding(ElnTestResultFields.RESULT))); List diagnostics = new ElnTestResultTemplatePublishValidator(mapper, catalog) .validate("tenant-1", "template-1"); verify(catalog).ensure("tenant-1", "system"); assertEquals(1, diagnostics.size()); assertEquals("TEST_CONCLUSION_BINDING_REQUIRED", diagnostics.get(0).getCode()); assertEquals("请在文档中标注“检验结论”", diagnostics.get(0).getMessage()); } @Test public void acceptsExactlyOneActivePrimaryBindingForEachSystemField() { ElnTemplateBindingMapper mapper = mock(ElnTemplateBindingMapper.class); when(mapper.selectList(any())).thenReturn(Arrays.asList( binding(ElnTestResultFields.RESULT), binding(ElnTestResultFields.CONCLUSION))); List diagnostics = new ElnTestResultTemplatePublishValidator( mapper, mock(ElnTestResultFieldCatalog.class)).validate("tenant-1", "template-1"); assertTrue(diagnostics.isEmpty()); } @Test public void explainsHowToResolveMissingAndDuplicateBindings() { List diagnostics = ElnTestResultTemplatePublishValidator.validateBindings( Arrays.asList(binding(ElnTestResultFields.RESULT), binding(ElnTestResultFields.RESULT))); assertEquals(2, diagnostics.size()); assertEquals("“检验结果”存在多个标注,请只保留一个", diagnostics.get(0).getMessage()); assertEquals("请在文档中标注“检验结论”", diagnostics.get(1).getMessage()); } private static ElnTemplateBindingEntity binding(String code) { ElnTemplateBindingEntity binding = new ElnTemplateBindingEntity(); binding.setZiduanBianma(code); binding.setBangdingZhuangtai("ACTIVE"); binding.setKongjianJuese("PRIMARY"); binding.setFDeleteMark(0); return binding; } }