1717
1818import java .lang .reflect .Method ;
1919import java .math .BigDecimal ;
20+ import java .util .Collections ;
2021
2122import junit .framework .TestCase ;
2223
2930import org .seasar .doma .internal .jdbc .sql .PreparedSql ;
3031import org .seasar .doma .jdbc .Config ;
3132import org .seasar .doma .jdbc .SelectOptions ;
33+ import org .seasar .doma .jdbc .SqlKind ;
3234import org .seasar .doma .jdbc .SqlLogType ;
35+ import org .seasar .doma .jdbc .UnknownColumnException ;
36+ import org .seasar .doma .jdbc .UnknownColumnHandler ;
37+ import org .seasar .doma .jdbc .entity .EntityType ;
38+ import org .seasar .doma .jdbc .query .Query ;
3339import org .seasar .doma .jdbc .query .SelectQuery ;
3440
3541import example .entity .Emp ;
4147 */
4248public class EntityProviderTest extends TestCase {
4349
44- private final MockConfig runtimeConfig = new MockConfig ();
45-
4650 public void testGetEntity () throws Exception {
4751 MockResultSetMetaData metaData = new MockResultSetMetaData ();
4852 metaData .columns .add (new ColumnMetaData ("id" ));
@@ -55,7 +59,52 @@ public void testGetEntity() throws Exception {
5559
5660 _Emp entityType = _Emp .getSingletonInternal ();
5761 EntityProvider <Emp > provider = new EntityProvider <>(entityType ,
58- new MySelectQuery (), false );
62+ new MySelectQuery (new MockConfig ()), false );
63+ Emp emp = provider .get (resultSet );
64+
65+ assertEquals (new Integer (1 ), emp .getId ());
66+ assertEquals ("aaa" , emp .getName ());
67+ assertEquals (new BigDecimal (10 ), emp .getSalary ());
68+ assertEquals (new Integer (100 ), emp .getVersion ());
69+ }
70+
71+ public void testGetEntity_UnknownColumnException () throws Exception {
72+ MockResultSetMetaData metaData = new MockResultSetMetaData ();
73+ metaData .columns .add (new ColumnMetaData ("id" ));
74+ metaData .columns .add (new ColumnMetaData ("name" ));
75+ metaData .columns .add (new ColumnMetaData ("salary" ));
76+ metaData .columns .add (new ColumnMetaData ("version" ));
77+ metaData .columns .add (new ColumnMetaData ("unknown" ));
78+ MockResultSet resultSet = new MockResultSet (metaData );
79+ resultSet .rows
80+ .add (new RowData (1 , "aaa" , new BigDecimal (10 ), 100 , "bbb" ));
81+ resultSet .next ();
82+
83+ _Emp entityType = _Emp .getSingletonInternal ();
84+ EntityProvider <Emp > provider = new EntityProvider <>(entityType ,
85+ new MySelectQuery (new MockConfig ()), false );
86+ try {
87+ provider .get (resultSet );
88+ fail ();
89+ } catch (UnknownColumnException expected ) {
90+ }
91+ }
92+
93+ public void testGetEntity_EmptyUnknownColumnHandler () throws Exception {
94+ MockResultSetMetaData metaData = new MockResultSetMetaData ();
95+ metaData .columns .add (new ColumnMetaData ("id" ));
96+ metaData .columns .add (new ColumnMetaData ("name" ));
97+ metaData .columns .add (new ColumnMetaData ("salary" ));
98+ metaData .columns .add (new ColumnMetaData ("version" ));
99+ metaData .columns .add (new ColumnMetaData ("unknown" ));
100+ MockResultSet resultSet = new MockResultSet (metaData );
101+ resultSet .rows
102+ .add (new RowData (1 , "aaa" , new BigDecimal (10 ), 100 , "bbb" ));
103+ resultSet .next ();
104+
105+ _Emp entityType = _Emp .getSingletonInternal ();
106+ EntityProvider <Emp > provider = new EntityProvider <>(entityType ,
107+ new MySelectQuery (new EmptyUnknownColumnHandlerConfig ()), false );
59108 Emp emp = provider .get (resultSet );
60109
61110 assertEquals (new Integer (1 ), emp .getId ());
@@ -66,14 +115,20 @@ public void testGetEntity() throws Exception {
66115
67116 protected class MySelectQuery implements SelectQuery {
68117
118+ private final Config config ;
119+
120+ MySelectQuery (Config config ) {
121+ this .config = config ;
122+ }
123+
69124 @ Override
70125 public SelectOptions getOptions () {
71126 return SelectOptions .get ();
72127 }
73128
74129 @ Override
75130 public Config getConfig () {
76- return runtimeConfig ;
131+ return config ;
77132 }
78133
79134 @ Override
@@ -88,7 +143,8 @@ public String getMethodName() {
88143
89144 @ Override
90145 public PreparedSql getSql () {
91- return null ;
146+ return new PreparedSql (SqlKind .SELECT , "dummy" , "dummy" , "dummy" ,
147+ Collections .emptyList (), SqlLogType .FORMATTED );
92148 }
93149
94150 @ Override
@@ -146,4 +202,20 @@ public String comment(String sql) {
146202 }
147203
148204 }
205+
206+ protected static class EmptyUnknownColumnHandler implements
207+ UnknownColumnHandler {
208+ @ Override
209+ public void handle (Query query , EntityType <?> entityType ,
210+ String unknownColumnName ) {
211+ }
212+ }
213+
214+ protected static class EmptyUnknownColumnHandlerConfig extends MockConfig {
215+ @ Override
216+ public UnknownColumnHandler getUnknownColumnHandler () {
217+ return new EmptyUnknownColumnHandler ();
218+ }
219+
220+ }
149221}
0 commit comments