package org.embulk.standards.preview;
import org.embulk.config.ConfigSource;
import org.embulk.exec.PreviewResult;
import org.embulk.test.TestingEmbulk;
import org.junit.Rule;
import org.junit.Test;
import java.io.IOException;
import java.nio.file.Path;
import static org.embulk.test.EmbulkTests.copyResource;
import static org.embulk.test.EmbulkTests.readFile;
import static org.embulk.test.EmbulkTests.readResource;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
public class TestFilePreview
{
private static final String RESOURCE_NAME_PREFIX = "org/embulk/standards/preview/file/test/";
@Rule
public TestingEmbulk embulk = TestingEmbulk.builder()
.build();
@Test
public void testSimple()
throws Exception
{
assertPreviewedRecords(embulk, "test_simple_load.yml", "test_simple.csv", "test_simple_previewed.csv");
}
@Test
public void changePreviewSampleBufferBytes()
throws Exception
{
assertPreviewedRecords(embulk, "test_sample_buffer_bytes_load.yml", "test_sample_buffer_bytes_exec.yml",
"test_sample_buffer_bytes.csv", "test_sample_buffer_bytes_previewed.csv");
}
private static void assertPreviewedRecords(TestingEmbulk embulk,
String loadYamlResourceName, String sourceCsvResourceName, String resultCsvResourceName)
throws IOException
{
assertPreviewedRecords(embulk, loadYamlResourceName, null, sourceCsvResourceName, resultCsvResourceName);
}
private static void assertPreviewedRecords(TestingEmbulk embulk,
String loadYamlResourceName, String execYamlResourceName, String sourceCsvResourceName, String resultCsvResourceName)
throws IOException
{
Path inputPath = embulk.createTempFile("csv");
Path outputPath = embulk.createTempFile("csv");
// in: config
copyResource(RESOURCE_NAME_PREFIX + sourceCsvResourceName, inputPath);
ConfigSource load = embulk.loadYamlResource(RESOURCE_NAME_PREFIX + loadYamlResourceName)
.set("path_prefix", inputPath.toAbsolutePath().toString());
// exec: config
final TestingEmbulk.InputBuilder builder = embulk.inputBuilder();
if (execYamlResourceName != null) {
final ConfigSource execConfig = embulk.loadYamlResource(RESOURCE_NAME_PREFIX + execYamlResourceName);
builder.exec(execConfig);
}
// execute preview
final PreviewResult result = builder.in(load).outputPath(outputPath).preview();
assertThat(readFile(outputPath), is(readResource(RESOURCE_NAME_PREFIX + resultCsvResourceName)));
}
}