package org.nextprot.api.web.txt.unit; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.nextprot.api.commons.utils.StringUtils; import org.nextprot.api.core.domain.Entry; import org.nextprot.api.core.service.EntryBuilderService; import org.nextprot.api.core.service.fluent.EntryConfig; import org.nextprot.api.web.dbunit.base.mvc.WebUnitBaseTest; import org.nextprot.api.web.service.ExportService; import org.nextprot.api.web.service.impl.writer.EntryVelocityBasedStreamWriter; import org.nextprot.api.web.service.impl.writer.EntryTXTStreamWriter; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; import java.io.Writer; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; /** * Adding test for txt export (including header) * * @author Daniel Teixeira http://github.com/ddtxra * */ public class ExportTXTHeaderTest extends WebUnitBaseTest { @Mock EntryBuilderService entryBuilderMockService; @Before public void setup() { super.setup(); MockitoAnnotations.initMocks(this); } //TEST for https://issues.isb-sib.ch/browse/CALIPHOMISC-330 @Test public void shouldContainTheNumberOfEntriesInTheHeader() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer writer = new PrintWriter(out); EntryVelocityBasedStreamWriter exporter = new EntryTXTStreamWriter(writer); exporter.setEntryBuilderService(entryBuilderMockService); Map<String, Object> map = new HashMap<>(); map.put(ExportService.ENTRIES_COUNT_PARAM, 2); when(entryBuilderMockService.build(any(EntryConfig.class))).thenReturn(new Entry("NX_1")).thenReturn(new Entry("NX_2")); exporter.write(Arrays.asList("NX_1", "NX_2"), map); String[] rows = out.toString().split(StringUtils.CR_LF); assertEquals(rows[0], "#nb entries=2"); assertEquals(rows[1], "NX_1"); assertEquals(rows[2], "NX_2"); } }