JdbcMapper/test/src/test/java/com/moparisthebest/jdbc/CleaningQueryMapperTest.java

93 lines
2.7 KiB
Java
Raw Normal View History

2017-05-18 14:26:23 -04:00
package com.moparisthebest.jdbc;
2018-04-18 00:16:16 -04:00
import com.moparisthebest.jdbc.codegen.CleaningPersonDao;
import com.moparisthebest.jdbc.codegen.JdbcMapper;
import com.moparisthebest.jdbc.codegen.JdbcMapperFactory;
2017-05-18 14:26:23 -04:00
import com.moparisthebest.jdbc.dto.*;
import org.junit.*;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.*;
import static com.moparisthebest.jdbc.QueryMapperTest.fieldPerson1;
import static com.moparisthebest.jdbc.QueryMapperTest.getConnection;
import static com.moparisthebest.jdbc.TryClose.tryClose;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Created by mopar on 6/10/14.
*/
@RunWith(Parameterized.class)
public class CleaningQueryMapperTest {
private static Connection conn;
@BeforeClass
public static void setUp() throws Throwable {
conn = getConnection();
}
@AfterClass
public static void tearDown() throws Throwable {
tryClose(conn);
}
protected QueryMapper qm;
2018-04-18 00:16:16 -04:00
protected CleaningPersonDao cleaningPersonDao;
protected final Cleaner<FieldPerson> personCleaner;
2017-05-18 14:26:23 -04:00
protected final ResultSetMapper rsm;
2018-04-18 00:16:16 -04:00
public CleaningQueryMapperTest(final Cleaner<FieldPerson> personCleaner, final ResultSetMapper rsm) {
this.personCleaner = personCleaner;
2017-05-18 14:26:23 -04:00
this.rsm = rsm;
}
@Before
public void open() {
2018-04-18 00:16:16 -04:00
if(rsm == null)
this.cleaningPersonDao = JdbcMapperFactory.create(CleaningPersonDao.class, conn);
else
this.qm = new QueryMapper(conn, rsm);
2017-05-18 14:26:23 -04:00
}
@After
public void close() {
tryClose(qm);
}
@Parameterized.Parameters(name="{0}")
public static Collection<Object[]> getParameters()
{
final Cleaner<FieldPerson> personCleaner = new Cleaner<FieldPerson>() {
@Override
2018-05-10 23:57:15 -04:00
@SuppressWarnings("unchecked")
public <E extends FieldPerson> E clean(final E dto) {
return (E) dto.cleanThyself();
2017-05-18 14:26:23 -04:00
}
};
return Arrays.asList(new Object[][] {
2018-04-18 00:16:16 -04:00
{ null, new CleaningResultSetMapper<FieldPerson>(personCleaner) },
{ null, new CleaningCachingResultSetMapper<FieldPerson>(personCleaner) },
{ null, new CleaningCompilingResultSetMapper<FieldPerson>(personCleaner, new CompilingRowToObjectMapper.Cache(true)) },
{ personCleaner, null },
2017-05-18 14:26:23 -04:00
});
}
// fields
@Test
public void testFieldRegularPerson() throws Throwable {
final Person expected = fieldPerson1;
2018-04-18 00:16:16 -04:00
final Person actual = this.cleaningPersonDao == null ?
qm.toObject("SELECT * FROM person WHERE person_no = ?", expected.getClass(), expected.getPersonNo())
:
this.cleaningPersonDao.getPerson(expected.getPersonNo(), personCleaner);
2017-05-18 14:26:23 -04:00
assertEquals(expected.getFirstName() + " " + expected.getLastName(), actual.getFirstName());
assertNull(actual.getLastName());
}
}