package com.constellio.app.modules.complementary.esRmRobots.services;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import com.constellio.model.entities.records.Content;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.services.contents.ContentManager;
import com.constellio.sdk.tests.ConstellioTest;
public class CSVReaderAcceptanceTest extends ConstellioTest {
ContentManager contentManager;
User adminUser;
CSVReader reader;
@Before
public void setUp()
throws Exception {
prepareSystem(withZeCollection().withAllTestUsers());
adminUser = getModelLayerFactory().newUserServices().getUserInCollection(admin, zeCollection);
contentManager = getModelLayerFactory().getContentManager();
reader = new CSVReader(contentManager);
}
@Test
public void givenCSVContentWhenParsingThenAllDataRetrieved()
throws Exception {
Content content = contentManager.createMajor(adminUser, "test.csv",
contentManager.upload(getTestResourceInputStream("test.csv")));
List<Map<String, String>> entries = reader.readCSVContent(content);
verifyFirstEntry(entries.get(0));
verifySecondEntry(entries.get(1));
}
@Test
public void givenCSVContentWithCommaSepWhenParsingThenAllDataRetrieved()
throws Exception {
Content content = contentManager.createMajor(adminUser, "test_sep.csv",
contentManager.upload(getTestResourceInputStream("test_sep.csv")));
List<Map<String, String>> entries = reader.readCSVContent(content);
verifyFirstEntry(entries.get(0));
verifySecondEntry(entries.get(1));
}
private void verifyFirstEntry(Map<String, String> entry) {
assertThat(entry.get("string1")).isEqualTo("value1");
assertThat(entry.get("string2")).isEqualTo("value2");
assertThat(entry.get("string3")).isEqualTo("value3");
}
private void verifySecondEntry(Map<String, String> entry) {
assertThat(entry.get("string1")).isEqualTo("value4");
assertThat(entry.get("string2")).isEqualTo("value5");
assertThat(entry.get("string3")).isEqualTo("value6");
}
}