mirror of
https://github.com/moparisthebest/JdbcMapper
synced 2024-12-21 23:08:52 -05:00
Add JdbcMapper cleaner test
This commit is contained in:
parent
337abc8c6d
commit
64e500ca2a
@ -349,7 +349,7 @@ public class CompileTimeResultSetMapper {
|
||||
if(cleaner == null)
|
||||
w.write("ret");
|
||||
else {
|
||||
w.append(cleaner).append(".clean(ret)");
|
||||
w.append(cleaner).append(" == null ? ret : ").append(cleaner).append(".clean(ret)");
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
@ -0,0 +1,15 @@
|
||||
package com.moparisthebest.jdbc.codegen;
|
||||
|
||||
import com.moparisthebest.jdbc.Cleaner;
|
||||
import com.moparisthebest.jdbc.dto.FieldPerson;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
@JdbcMapper.Mapper(
|
||||
cachePreparedStatements = JdbcMapper.OptionalBool.FALSE
|
||||
, allowReflection = JdbcMapper.OptionalBool.TRUE
|
||||
)
|
||||
public interface CleaningPersonDao {
|
||||
@JdbcMapper.SQL(value = "SELECT person_no, first_name, last_name, birth_date FROM person WHERE person_no = {personNo}")
|
||||
FieldPerson getPerson(long personNo, Cleaner<FieldPerson> personCleaner) throws SQLException;
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
package com.moparisthebest.jdbc;
|
||||
|
||||
import com.moparisthebest.jdbc.codegen.CleaningPersonDao;
|
||||
import com.moparisthebest.jdbc.codegen.JdbcMapper;
|
||||
import com.moparisthebest.jdbc.codegen.JdbcMapperFactory;
|
||||
import com.moparisthebest.jdbc.dto.*;
|
||||
import org.junit.*;
|
||||
import org.junit.runner.RunWith;
|
||||
@ -35,15 +38,21 @@ public class CleaningQueryMapperTest {
|
||||
}
|
||||
|
||||
protected QueryMapper qm;
|
||||
protected CleaningPersonDao cleaningPersonDao;
|
||||
protected final Cleaner<FieldPerson> personCleaner;
|
||||
protected final ResultSetMapper rsm;
|
||||
|
||||
public CleaningQueryMapperTest(final ResultSetMapper rsm) {
|
||||
public CleaningQueryMapperTest(final Cleaner<FieldPerson> personCleaner, final ResultSetMapper rsm) {
|
||||
this.personCleaner = personCleaner;
|
||||
this.rsm = rsm;
|
||||
}
|
||||
|
||||
@Before
|
||||
public void open() {
|
||||
this.qm = new QueryMapper(conn, rsm);
|
||||
if(rsm == null)
|
||||
this.cleaningPersonDao = JdbcMapperFactory.create(CleaningPersonDao.class, conn);
|
||||
else
|
||||
this.qm = new QueryMapper(conn, rsm);
|
||||
}
|
||||
|
||||
@After
|
||||
@ -61,9 +70,10 @@ public class CleaningQueryMapperTest {
|
||||
}
|
||||
};
|
||||
return Arrays.asList(new Object[][] {
|
||||
{ new CleaningResultSetMapper<FieldPerson>(personCleaner) },
|
||||
{ new CleaningCachingResultSetMapper<FieldPerson>(personCleaner) },
|
||||
{ new CleaningCompilingResultSetMapper<FieldPerson>(personCleaner, new CompilingRowToObjectMapper.Cache(true)) },
|
||||
{ null, new CleaningResultSetMapper<FieldPerson>(personCleaner) },
|
||||
{ null, new CleaningCachingResultSetMapper<FieldPerson>(personCleaner) },
|
||||
{ null, new CleaningCompilingResultSetMapper<FieldPerson>(personCleaner, new CompilingRowToObjectMapper.Cache(true)) },
|
||||
{ personCleaner, null },
|
||||
});
|
||||
}
|
||||
|
||||
@ -72,7 +82,10 @@ public class CleaningQueryMapperTest {
|
||||
@Test
|
||||
public void testFieldRegularPerson() throws Throwable {
|
||||
final Person expected = fieldPerson1;
|
||||
final Person actual = qm.toObject(personRegular, expected.getClass(), expected.getPersonNo());
|
||||
final Person actual = this.cleaningPersonDao == null ?
|
||||
qm.toObject("SELECT * FROM person WHERE person_no = ?", expected.getClass(), expected.getPersonNo())
|
||||
:
|
||||
this.cleaningPersonDao.getPerson(expected.getPersonNo(), personCleaner);
|
||||
assertEquals(expected.getFirstName() + " " + expected.getLastName(), actual.getFirstName());
|
||||
assertNull(actual.getLastName());
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ public class QueryRunnerTest {
|
||||
|
||||
private void testPerson(final Person expected, final String query) throws Throwable {
|
||||
//final QueryRunner<ListQueryMapper> lqr = qr.withFactory(() -> new ListQueryMapper(QueryMapperTest::getConnection));
|
||||
final int[] failCount = new int[]{0};
|
||||
final Person actual =
|
||||
//qr.run(
|
||||
//qr.runRetry(
|
||||
@ -31,8 +32,8 @@ public class QueryRunnerTest {
|
||||
new QueryRunner.Runner<QueryMapper, Person>() {
|
||||
@Override
|
||||
public Person run(final QueryMapper qm) throws SQLException {
|
||||
if(Math.random() < 0.5) {
|
||||
System.out.println("fake fail");
|
||||
if(++failCount[0] < 5) {
|
||||
//System.out.println("fake fail");
|
||||
throw new SQLException("fake 50% failure rate");
|
||||
}
|
||||
return qm.toObject(query, expected.getClass(), expected.getPersonNo());
|
||||
|
Loading…
Reference in New Issue
Block a user