package ca.intelliware.ihtsdo.mlds.service.affiliatesimport; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.io.StringReader; import java.util.List; import javax.annotation.Resource; import javax.transaction.Transactional; import org.apache.commons.io.IOUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = ca.intelliware.ihtsdo.mlds.Application.class) @WebAppConfiguration @ActiveProfiles("dev") @Transactional public class AffiliatesImportGeneratorIntegrationTest { @Resource AffiliatesImportGenerator affiliatesImportGenerator; @Resource AffiliatesMapper affiliatesMapper; @Before public void setup() { } @Test public void generateFileShouldGeneratePopulatedHeaderAndDataRows() throws IOException { String generated = affiliatesImportGenerator.generateFile(2); List<String> lines = IOUtils.readLines(new StringReader(generated)); assertEquals(lines.size(), 3); // Header Row String[] headerLine = splitLine(lines.get(0)); assertEquals(headerLine.length, affiliatesMapper.getMappings().size()); assertEquals(headerLine[0], "member"); // Data Row 1 String[] dataRow1 = splitLine(lines.get(1)); assertEquals(dataRow1.length, affiliatesMapper.getMappings().size()); assertEquals("DK", dataRow1[0]); assertEquals("Example Other Text", dataRow1[5]); // Data Row 2 String[] dataRow2 = splitLine(lines.get(2)); assertEquals(dataRow2.length, affiliatesMapper.getMappings().size()); assertEquals("DK", dataRow2[0]); assertEquals("Example Other Text 1", dataRow2[5]); } private String[] splitLine(String line) { return line.split(AffiliateFileFormat.COLUMN_SEPARATOR_REGEX, -1); } }