//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.consumers.template; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.List; import java.util.Map; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.resource.ResourceInitializationException; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; public class FileTemplateRecordConsumerTest extends AbstractTemplateRecordConsumerTest { private static final ObjectMapper YAMLMAPPER = new ObjectMapper(new YAMLFactory()); private static final ObjectMapper JSONMAPPER = new ObjectMapper(new JsonFactory()); private Path tempDirectory; public FileTemplateRecordConsumerTest() { super(FileTemplateRecordConsumer.class); } @Before public void beforeFileRecordConsumerTest() throws IOException { tempDirectory = Files.createTempDirectory(sourceName); tempDirectory.toFile().deleteOnExit(); } @Test public void testWriteRecordsYaml() throws AnalysisEngineProcessException, ResourceInitializationException, JsonParseException, JsonMappingException, IOException { processJCas(FileTemplateRecordConsumer.PARAM_OUTPUT_DIRECTORY, tempDirectory.toString()); Path yamlFile = Paths.get(tempDirectory.toString(), annotatorClass.getSimpleName() + ".yaml"); yamlFile.toFile().deleteOnExit(); Map<String, Collection<ExtractedRecord>> records = YAMLMAPPER.readValue(yamlFile.toFile(), new TypeReference<Map<String, List<ExtractedRecord>>>() { }); checkRecords(records); Files.delete(yamlFile); } @Test public void testWriteRecordsJson() throws AnalysisEngineProcessException, ResourceInitializationException, JsonParseException, JsonMappingException, IOException { processJCas(FileTemplateRecordConsumer.PARAM_OUTPUT_DIRECTORY, tempDirectory.toString(), FileTemplateRecordConsumer.PARAM_OUTPUT_FORMAT, "json"); Path jsonFile = Paths.get(tempDirectory.toString(), annotatorClass.getSimpleName() + ".json"); jsonFile.toFile().deleteOnExit(); Map<String, Collection<ExtractedRecord>> records = JSONMAPPER.readValue(jsonFile.toFile(), new TypeReference<Map<String, List<ExtractedRecord>>>() { }); checkRecords(records); Files.delete(jsonFile); } @After public void afterFileRecordConsumerTest() throws IOException { Files.delete(tempDirectory); } }