package io.trygvis.persistence; import io.trygvis.container.compiler.model.TypeRef; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import static io.trygvis.persistence.FieldMirror.PrimitiveFieldMirror; import static java.lang.String.format; import static org.testng.Assert.assertEquals; public class EntityMirrorTest { static FieldMirror idLong = new PrimitiveFieldMirror(new TypeRef(Long.class), "id", "id", true, false); static FieldMirror idString = new PrimitiveFieldMirror(new TypeRef(String.class), "id", "id", true, false); @DataProvider(name = "insertIntoSql", parallel = true) public static Object[][] insertIntoProvider() { return new Object[][]{ new Object[]{ new FieldMirror[]{idString}, "INSERT INTO my_table(id) VALUES(?);", "DELETE FROM my_table WHERE id=?;", format( "CREATE TABLE my_table(%n" + " id VARCHAR(1000) PRIMARY KEY%n" + ");")}, new Object[]{ new FieldMirror[]{idLong}, "INSERT INTO my_table(id) VALUES(?);", "DELETE FROM my_table WHERE id=?;", format( "CREATE TABLE my_table(%n" + " id BIGINT PRIMARY KEY%n" + ");")}, }; } @Test(dataProvider = "insertIntoSql") public void testInsertIntoSql(FieldMirror[] fields, String insert, String delete, String create) throws Exception { EntityMirror myTable = new EntityMirror(new GeneratorSupport(), new TypeRef("Wat"), "my_table"); for (FieldMirror field : fields) { myTable.add(field); } assertEquals(myTable.insertIntoSql(), insert); assertEquals(myTable.deleteFromSql(), delete); assertEquals(myTable.createTableSql(), create); } }