Repository: cayenne Updated Branches: refs/heads/master 57a04d207 -> 69be1dc00
rewriting the unit test to avoid manual connection management Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/69be1dc0 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/69be1dc0 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/69be1dc0 Branch: refs/heads/master Commit: 69be1dc00d619a715a96b528769fb7e3d555a285 Parents: 57a04d2 Author: aadamchik <[email protected]> Authored: Sun May 3 07:10:01 2015 -0400 Committer: aadamchik <[email protected]> Committed: Sun May 3 07:10:01 2015 -0400 ---------------------------------------------------------------------- .../cayenne/velocity/ResultDirectiveIT.java | 84 +++++--------------- 1 file changed, 22 insertions(+), 62 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/69be1dc0/cayenne-server/src/test/java/org/apache/cayenne/velocity/ResultDirectiveIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/velocity/ResultDirectiveIT.java b/cayenne-server/src/test/java/org/apache/cayenne/velocity/ResultDirectiveIT.java index d91bcfd..ceca0de 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/velocity/ResultDirectiveIT.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/velocity/ResultDirectiveIT.java @@ -19,29 +19,26 @@ package org.apache.cayenne.velocity; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import java.sql.Connection; +import java.sql.SQLException; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.cayenne.DataRow; import org.apache.cayenne.access.DataNode; import org.apache.cayenne.access.MockOperationObserver; -import org.apache.cayenne.access.jdbc.SQLTemplateAction; import org.apache.cayenne.configuration.server.ServerRuntime; import org.apache.cayenne.dba.JdbcAdapter; import org.apache.cayenne.di.Inject; import org.apache.cayenne.query.CapsStrategy; import org.apache.cayenne.query.SQLTemplate; -import org.apache.cayenne.query.SelectQuery; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; import org.apache.cayenne.testdo.testmap.Artist; import org.apache.cayenne.unit.di.server.CayenneProjects; import org.apache.cayenne.unit.di.server.ServerCase; -import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory; import org.apache.cayenne.unit.di.server.UseServerRuntime; +import org.junit.Before; import org.junit.Test; /** @@ -61,47 +58,48 @@ public class ResultDirectiveIT extends ServerCase { private DataNode node; @Inject - private ServerCaseDataSourceFactory dataSourceFactory; + protected DBHelper dbHelper; + + @Before + public void before() throws SQLException { + new TableHelper(dbHelper, "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME").insert(1l, "ArtistToTestResult"); + } @Test public void testWithoutResultDirective() throws Exception { String sql = "SELECT ARTIST_ID, ARTIST_NAME FROM ARTIST"; - Map<String, Object> artist = insertArtist(); Map<String, Object> selectResult = selectForQuery(sql); - assertEquals(artist.get("ARTIST_ID"), selectResult.get("ARTIST_ID")); - assertEquals(artist.get("ARTIST_NAME"), selectResult.get("ARTIST_NAME")); + assertEquals(1l, selectResult.get("ARTIST_ID")); + assertEquals("ArtistToTestResult", selectResult.get("ARTIST_NAME")); } @Test public void testWithOnlyResultDirective() throws Exception { - String sql = "SELECT #result('ARTIST_ID' 'java.lang.Integer')," + " #result('ARTIST_NAME' 'java.lang.String')" + String sql = "SELECT #result('ARTIST_ID' 'java.lang.Integer'), #result('ARTIST_NAME' 'java.lang.String')" + " FROM ARTIST"; - Map<String, Object> artist = insertArtist(); Map<String, Object> selectResult = selectForQuery(sql); - assertEquals(artist.get("ARTIST_ID"), selectResult.get("ARTIST_ID")); - assertEquals(artist.get("ARTIST_NAME"), selectResult.get("ARTIST_NAME").toString().trim()); + assertEquals(1l, selectResult.get("ARTIST_ID")); + assertEquals("ArtistToTestResult", selectResult.get("ARTIST_NAME").toString().trim()); } @Test public void testWithMixedDirectiveUse1() throws Exception { - String sql = "SELECT ARTIST_ID," + " #result('ARTIST_NAME' 'java.lang.String')" + " FROM ARTIST"; - Map<String, Object> artist = insertArtist(); + String sql = "SELECT ARTIST_ID, #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST"; Map<String, Object> selectResult = selectForQuery(sql); - assertEquals(artist.get("ARTIST_ID"), selectResult.get("ARTIST_ID")); - assertEquals(artist.get("ARTIST_NAME"), selectResult.get("ARTIST_NAME").toString().trim()); + assertEquals(1l, selectResult.get("ARTIST_ID")); + assertEquals("ArtistToTestResult", selectResult.get("ARTIST_NAME").toString().trim()); } @Test public void testWithMixedDirectiveUse2() throws Exception { - String sql = "SELECT #result('ARTIST_ID' 'java.lang.Integer')," + " ARTIST_NAME " + " FROM ARTIST"; - Map<String, Object> artist = insertArtist(); + String sql = "SELECT #result('ARTIST_ID' 'java.lang.Integer'), ARTIST_NAME FROM ARTIST"; Map<String, Object> selectResult = selectForQuery(sql); - assertEquals(artist.get("ARTIST_ID"), selectResult.get("ARTIST_ID")); - assertEquals(artist.get("ARTIST_NAME"), selectResult.get("ARTIST_NAME")); + assertEquals(1l, selectResult.get("ARTIST_ID")); + assertEquals("ArtistToTestResult", selectResult.get("ARTIST_NAME")); } private Map<String, Object> selectForQuery(String sql) { @@ -110,49 +108,11 @@ public class ResultDirectiveIT extends ServerCase { MockOperationObserver observer = new MockOperationObserver(); runtime.getDataDomain().performQueries(Collections.singletonList(template), observer); + @SuppressWarnings("unchecked") List<Map<String, Object>> data = observer.rowsForQuery(template); assertEquals(1, data.size()); Map<String, Object> row = data.get(0); return row; } - /** - * Inserts one Artist - */ - private Map<String, Object> insertArtist() throws Exception { - Map<String, Object> parameters = new HashMap<String, Object>(); - parameters.put("id", 1); - parameters.put("name", "ArtistToTestResult"); - String templateString = "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME, DATE_OF_BIRTH) " - + "VALUES (#bind($id), #bind($name), #bind($dob))"; - - SQLTemplate template = new SQLTemplate(Object.class, templateString); - - template.setParams(parameters); - - SQLTemplateAction action = new SQLTemplateAction(template, node); - - Connection c = dataSourceFactory.getSharedDataSource().getConnection(); - try { - MockOperationObserver observer = new MockOperationObserver(); - action.performAction(c, observer); - c.commit(); - - int[] batches = observer.countsForQuery(template); - assertNotNull(batches); - assertEquals(1, batches.length); - assertEquals(1, batches[0]); - } finally { - c.close(); - } - - MockOperationObserver observer = new MockOperationObserver(); - SelectQuery query = new SelectQuery(Artist.class); - runtime.getDataDomain().performQueries(Collections.singletonList(query), observer); - - List<?> data = observer.rowsForQuery(query); - assertEquals(1, data.size()); - DataRow row = (DataRow) data.get(0); - return row; - } }
