src/test/java/org/embulk/output/kintone/KintoneColumnVisitorVerifier.java in embulk-output-kintone-0.4.1 vs src/test/java/org/embulk/output/kintone/KintoneColumnVisitorVerifier.java in embulk-output-kintone-1.0.0
- old
+ new
@@ -3,50 +3,71 @@
import com.kintone.client.model.record.FieldType;
import com.kintone.client.model.record.Record;
import com.kintone.client.model.record.UpdateKey;
import java.util.Map;
import java.util.function.BiConsumer;
+import javax.validation.UnexpectedTypeException;
import org.embulk.spi.Column;
import org.embulk.spi.Page;
import org.embulk.spi.PageReader;
import org.embulk.spi.Schema;
public class KintoneColumnVisitorVerifier {
private final Schema schema;
- private final Map<String, KintoneColumnOption> columnOptions;
- private final PageReader pageReader;
+ private final Map<String, KintoneColumnOption> options;
+ private final PageReader reader;
private final KintoneColumnVisitor visitor;
public KintoneColumnVisitorVerifier(
+ Schema schema, Map<String, KintoneColumnOption> options, String updateKeyName, Page page) {
+ this(schema, options, false, false, updateKeyName, page);
+ }
+
+ public KintoneColumnVisitorVerifier(
Schema schema,
- Map<String, KintoneColumnOption> columnOptions,
+ Map<String, KintoneColumnOption> options,
+ boolean preferNulls,
+ boolean ignoreNulls,
String updateKeyName,
Page page) {
this.schema = schema;
- this.columnOptions = columnOptions;
- pageReader = new PageReader(schema);
- pageReader.setPage(page);
- visitor = new KintoneColumnVisitor(pageReader, columnOptions, updateKeyName);
+ this.options = options;
+ reader = new PageReader(schema);
+ reader.setPage(page);
+ visitor = new KintoneColumnVisitor(reader, options, preferNulls, ignoreNulls, updateKeyName);
}
+ public void verify() {
+ verify((record, updateKey) -> {});
+ }
+
public void verify(BiConsumer<Record, UpdateKey> consumer) {
- if (!pageReader.nextRecord()) {
+ verify(consumer, false);
+ }
+
+ public void verify(BiConsumer<Record, UpdateKey> consumer, boolean nullable) {
+ if (!reader.nextRecord()) {
throw new IllegalStateException();
}
Record record = new Record();
visitor.setRecord(record);
UpdateKey updateKey = new UpdateKey();
visitor.setUpdateKey(updateKey);
schema.visitColumns(visitor);
- schema.getColumns().forEach(column -> verify(record, column));
+ schema.getColumns().forEach(column -> verify(record, column, nullable));
consumer.accept(record, updateKey);
}
- private void verify(Record record, Column column) {
- FieldType expected = FieldType.valueOf(columnOptions.get(column.getName()).getType());
+ private void verify(Record record, Column column, boolean nullable) {
+ FieldType expected = FieldType.valueOf(options.get(column.getName()).getType());
FieldType actual = record.getFieldType(column.getName());
- if (!expected.equals(actual)) {
- System.out.printf(
- "%s: Expected type is %s, but actual type is %s%n", column.getName(), expected, actual);
+ if (actual == null && nullable) {
+ return;
+ }
+ if (expected != actual) {
+ throw new UnexpectedTypeException(
+ String.format(
+ "%s: Expected type is %s, but actual type is %s%n",
+ column.getName(), expected, actual));
}
}
}