You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/06/20 11:27:38 UTC
svn commit: r956338 [2/3] - in /cayenne/main/trunk:
build-tools/cayenne-test-utilities/src/main/java/org/apache/cayenne/test/jdbc/
framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/
framework/cayenne-jdk1.5-unpublished/src/te...
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRefreshingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRefreshingTest.java?rev=956338&r1=956337&r2=956338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRefreshingTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRefreshingTest.java Sun Jun 20 09:27:37 2010
@@ -21,280 +21,344 @@ package org.apache.cayenne.access;
import java.util.Collections;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
-import org.apache.cayenne.ObjectId;
import org.apache.cayenne.PersistenceState;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.query.SQLTemplate;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.ExpressionFactory;
+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.testdo.testmap.Painting;
+import org.apache.cayenne.unit.di.UnitTestClosure;
+import org.apache.cayenne.unit.di.server.DataChannelQueryInterceptor;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
/**
* Test suite covering possible scenarios of refreshing updated objects. This includes
* refreshing relationships and attributes changed outside of Cayenne with and without
* prefetching.
*/
-public class DataContextRefreshingTest extends DataContextCase {
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataContextRefreshingTest extends ServerCase {
+
+ @Inject
+ protected DataContext context;
+
+ @Inject
+ protected DBHelper dbHelper;
+
+ @Inject
+ protected DataChannelQueryInterceptor queryInterceptor;
+
+ protected TableHelper tArtist;
+ protected TableHelper tPainting;
+
+ @Override
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("PAINTING_INFO");
+ dbHelper.deleteAll("PAINTING");
+ dbHelper.deleteAll("ARTIST_EXHIBIT");
+ dbHelper.deleteAll("ARTIST");
+
+ tArtist = new TableHelper(dbHelper, "ARTIST");
+ tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+
+ tPainting = new TableHelper(dbHelper, "PAINTING");
+ tPainting.setColumns(
+ "PAINTING_ID",
+ "PAINTING_TITLE",
+ "ARTIST_ID",
+ "ESTIMATED_PRICE");
+ }
+
+ protected void createSingleArtistDataSet() throws Exception {
+ tArtist.insert(5, "artist2");
+ }
+
+ protected void createSingleArtistAndPaintingDataSet() throws Exception {
+ createSingleArtistDataSet();
+ tPainting.insert(4, "p", 5, 1000);
+ }
+
+ protected void createSingleArtistAndUnrelatedPaintingDataSet() throws Exception {
+ createSingleArtistDataSet();
+ tPainting.insert(4, "p", null, 1000);
+ }
+
+ protected void createTwoArtistsAndPaintingDataSet() throws Exception {
+ tArtist.insert(5, "artist2");
+ tArtist.insert(6, "artist3");
+ tPainting.insert(4, "p", 5, 1000);
+ }
public void testRefetchRootWithUpdatedAttributes() throws Exception {
+
+ createSingleArtistDataSet();
+
String nameBefore = "artist2";
String nameAfter = "not an artist";
- Artist artist = fetchArtist(nameBefore, false);
- assertNotNull(artist);
+ SelectQuery queryBefore = new SelectQuery(Artist.class, ExpressionFactory
+ .matchExp("artistName", nameBefore));
+
+ Artist artist = (Artist) context.performQuery(queryBefore).get(0);
assertEquals(nameBefore, artist.getArtistName());
- // update via DataNode directly
- updateRow(artist.getObjectId(), "ARTIST_NAME", nameAfter);
+ assertEquals(1, tArtist.update().set("ARTIST_NAME", nameAfter).execute());
// fetch into the same context
- artist = fetchArtist(nameBefore, false);
- assertNull(artist);
+ List<Artist> artists = context.performQuery(queryBefore);
+ assertEquals(0, artists.size());
- artist = fetchArtist(nameAfter, false);
+ SelectQuery queryAfter = new SelectQuery(Artist.class, ExpressionFactory
+ .matchExp("artistName", nameAfter));
+
+ artist = (Artist) context.performQuery(queryAfter).get(0);
assertNotNull(artist);
assertEquals(nameAfter, artist.getArtistName());
}
public void testRefetchRootWithNullifiedToOne() throws Exception {
- Painting painting = insertPaintingInContext("p");
+ createSingleArtistAndPaintingDataSet();
+
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
+
assertNotNull(painting.getToArtist());
+ assertEquals("artist2", painting.getToArtist().getArtistName());
- // update via DataNode directly
- updateRow(painting.getObjectId(), "ARTIST_ID", null);
+ assertEquals(1, tPainting.update().set("ARTIST_ID", null).execute());
// select without prefetch
- painting = fetchPainting(painting.getPaintingTitle(), false);
+ painting = (Painting) context
+ .performQuery(new SelectQuery(Painting.class))
+ .get(0);
assertNotNull(painting);
assertNull(painting.getToArtist());
}
public void testRefetchRootWithChangedToOneTarget() throws Exception {
- Painting painting = insertPaintingInContext("p");
+ createTwoArtistsAndPaintingDataSet();
+
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
+
Artist artistBefore = painting.getToArtist();
assertNotNull(artistBefore);
+ assertEquals("artist2", artistBefore.getArtistName());
- Artist artistAfter = fetchArtist("artist3", false);
- assertNotNull(artistAfter);
- assertNotSame(artistBefore, artistAfter);
-
- // update via DataNode directly
- updateRow(painting.getObjectId(), "ARTIST_ID", artistAfter
- .getObjectId()
- .getIdSnapshot()
- .get("ARTIST_ID"));
+ assertEquals(1, tPainting.update().set("ARTIST_ID", 6).execute());
// select without prefetch
- painting = fetchPainting(painting.getPaintingTitle(), false);
+ painting = (Painting) context
+ .performQuery(new SelectQuery(Painting.class))
+ .get(0);
assertNotNull(painting);
- assertSame(artistAfter, painting.getToArtist());
+ assertEquals("artist3", painting.getToArtist().getArtistName());
}
public void testRefetchRootWithNullToOneTargetChangedToNotNull() throws Exception {
- Painting painting = insertPaintingInContext("p");
- painting.setToArtist(null);
- context.commitChanges();
+ createSingleArtistAndUnrelatedPaintingDataSet();
- assertNull(painting.getToArtist());
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
- Artist artistAfter = fetchArtist("artist3", false);
- assertNotNull(artistAfter);
+ assertNull(painting.getToArtist());
- // update via DataNode directly
- updateRow(painting.getObjectId(), "ARTIST_ID", artistAfter
- .getObjectId()
- .getIdSnapshot()
- .get("ARTIST_ID"));
+ assertEquals(1, tPainting.update().set("ARTIST_ID", 5).execute());
// select without prefetch
- painting = fetchPainting(painting.getPaintingTitle(), false);
+ painting = (Painting) context
+ .performQuery(new SelectQuery(Painting.class))
+ .get(0);
assertNotNull(painting);
- assertSame(artistAfter, painting.getToArtist());
+ assertEquals("artist2", painting.getToArtist().getArtistName());
}
public void testRefetchRootWithDeletedToMany() throws Exception {
- Painting painting = insertPaintingInContext("p");
- Artist artist = painting.getToArtist();
+ createSingleArtistAndPaintingDataSet();
+
+ Artist artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(
+ 0);
assertEquals(artist.getPaintingArray().size(), 1);
- deleteRow(painting.getObjectId());
+ assertEquals(1, tPainting
+ .delete()
+ .where(Painting.PAINTING_ID_PK_COLUMN, 4)
+ .execute());
// select without prefetch
- artist = fetchArtist(artist.getArtistName(), false);
+ artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(0);
assertEquals(artist.getPaintingArray().size(), 1);
// select using relationship prefetching
- artist = fetchArtist(artist.getArtistName(), true);
+ SelectQuery query = new SelectQuery(Artist.class);
+ query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+ artist = (Artist) context.performQuery(query).get(0);
assertEquals(0, artist.getPaintingArray().size());
}
public void testRefetchRootWithAddedToMany() throws Exception {
- Artist artist = fetchArtist("artist2", false);
+
+ createSingleArtistDataSet();
+
+ Artist artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(
+ 0);
assertEquals(artist.getPaintingArray().size(), 0);
- createTestData("P2");
+ tPainting.insert(5, "p", 5, 1000);
// select without prefetch
- artist = fetchArtist(artist.getArtistName(), false);
+ SelectQuery query = new SelectQuery(Artist.class);
+ artist = (Artist) context.performQuery(query).get(0);
assertEquals(artist.getPaintingArray().size(), 0);
// select using relationship prefetching
- artist = fetchArtist(artist.getArtistName(), true);
+ query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
+ artist = (Artist) context.performQuery(query).get(0);
assertEquals(artist.getPaintingArray().size(), 1);
}
public void testInvalidateRootWithUpdatedAttributes() throws Exception {
+ createSingleArtistDataSet();
+
String nameBefore = "artist2";
String nameAfter = "not an artist";
- Artist artist = fetchArtist(nameBefore, false);
+ Artist artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(
+ 0);
assertNotNull(artist);
assertEquals(nameBefore, artist.getArtistName());
// update via DataNode directly
- updateRow(artist.getObjectId(), "ARTIST_NAME", nameAfter);
+ assertEquals(1, tArtist.update().set("ARTIST_NAME", nameAfter).execute());
context.invalidateObjects(Collections.singletonList(artist));
assertEquals(nameAfter, artist.getArtistName());
}
public void testInvalidateRootWithNullifiedToOne() throws Exception {
- Painting painting = insertPaintingInContext("p");
+
+ createSingleArtistAndPaintingDataSet();
+
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
+
assertNotNull(painting.getToArtist());
+ assertEquals("artist2", painting.getToArtist().getArtistName());
- // update via DataNode directly
- updateRow(painting.getObjectId(), "ARTIST_ID", null);
+ assertEquals(1, tPainting.update().set("ARTIST_ID", null).execute());
context.invalidateObjects(Collections.singletonList(painting));
assertNull(painting.getToArtist());
}
public void testInvalidateRootWithChangedToOneTarget() throws Exception {
- Painting painting = insertPaintingInContext("p");
+ createTwoArtistsAndPaintingDataSet();
+
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
Artist artistBefore = painting.getToArtist();
assertNotNull(artistBefore);
+ assertEquals("artist2", artistBefore.getArtistName());
- Artist artistAfter = fetchArtist("artist3", false);
- assertNotNull(artistAfter);
- assertNotSame(artistBefore, artistAfter);
-
- // update via DataNode directly
- updateRow(painting.getObjectId(), "ARTIST_ID", artistAfter
- .getObjectId()
- .getIdSnapshot()
- .get("ARTIST_ID"));
+ assertEquals(1, tPainting.update().set("ARTIST_ID", 6).execute());
context.invalidateObjects(Collections.singletonList(painting));
- assertSame(artistAfter, painting.getToArtist());
+ assertNotSame(artistBefore, painting.getToArtist());
+ assertEquals("artist3", painting.getToArtist().getArtistName());
}
public void testInvalidateRootWithNullToOneTargetChangedToNotNull() throws Exception {
- Painting painting = insertPaintingInContext("p");
- painting.setToArtist(null);
- context.commitChanges();
+ createSingleArtistAndUnrelatedPaintingDataSet();
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
assertNull(painting.getToArtist());
- Artist artistAfter = fetchArtist("artist3", false);
- assertNotNull(artistAfter);
-
- // update via DataNode directly
- updateRow(painting.getObjectId(), "ARTIST_ID", artistAfter
- .getObjectId()
- .getIdSnapshot()
- .get("ARTIST_ID"));
+ assertEquals(1, tPainting.update().set("ARTIST_ID", 5).execute());
context.invalidateObjects(Collections.singletonList(painting));
- assertSame(artistAfter, painting.getToArtist());
+ assertNotNull(painting.getToArtist());
+ assertEquals("artist2", painting.getToArtist().getArtistName());
}
public void testInvalidateRootWithDeletedToMany() throws Exception {
- Painting painting = insertPaintingInContext("p");
- Artist artist = painting.getToArtist();
+ createSingleArtistAndPaintingDataSet();
+
+ Artist artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(
+ 0);
assertEquals(artist.getPaintingArray().size(), 1);
- deleteRow(painting.getObjectId());
+ assertEquals(1, tPainting.delete().execute());
context.invalidateObjects(Collections.singletonList(artist));
assertEquals(artist.getPaintingArray().size(), 0);
}
public void testInvaliateRootWithAddedToMany() throws Exception {
- Artist artist = fetchArtist("artist2", false);
+
+ createSingleArtistDataSet();
+
+ Artist artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(
+ 0);
assertEquals(artist.getPaintingArray().size(), 0);
- createTestData("P2");
+ tPainting.insert(4, "p", 5, 1000);
+
assertEquals(artist.getPaintingArray().size(), 0);
context.invalidateObjects(Collections.singletonList(artist));
assertEquals(artist.getPaintingArray().size(), 1);
}
public void testInvalidateThenModify() throws Exception {
- Artist artist = fetchArtist("artist2", false);
+
+ createSingleArtistDataSet();
+
+ final Artist artist = (Artist) context
+ .performQuery(new SelectQuery(Artist.class))
+ .get(0);
assertNotNull(artist);
context.invalidateObjects(Collections.singletonList(artist));
assertEquals(PersistenceState.HOLLOW, artist.getPersistenceState());
- // this must trigger a fetch
- artist.setArtistName("new name");
+ int queries = queryInterceptor.runWithQueryCounter(new UnitTestClosure() {
+
+ public void execute() {
+ // this must trigger a fetch
+ artist.setArtistName("new name");
+ }
+ });
+
+ assertEquals(1, queries);
assertEquals(PersistenceState.MODIFIED, artist.getPersistenceState());
}
public void testModifyHollow() throws Exception {
- createTestData("P2");
- // reset context
- context = createDataContext();
+ createSingleArtistAndPaintingDataSet();
- Painting painting = fetchPainting("P_artist2", false);
- Artist artist = painting.getToArtist();
+ Painting painting = (Painting) context.performQuery(
+ new SelectQuery(Painting.class)).get(0);
+ final Artist artist = painting.getToArtist();
assertEquals(PersistenceState.HOLLOW, artist.getPersistenceState());
assertNull(artist.readPropertyDirectly("artistName"));
- // this must trigger a fetch
- artist.setDateOfBirth(new Date());
- assertEquals(PersistenceState.MODIFIED, artist.getPersistenceState());
- assertNotNull(artist.readPropertyDirectly("artistName"));
- }
+ int queries = queryInterceptor.runWithQueryCounter(new UnitTestClosure() {
- /**
- * Helper method to update a single column in a database row.
- */
- private void updateRow(ObjectId id, String dbAttribute, Object newValue) {
- SQLTemplate updateQuery = new SQLTemplate(
- id.getEntityName(),
- "UPDATE $table SET $column = #bind($value) "
- + "WHERE $idColumn = #bind($id)");
-
- ObjEntity entity = getDomain().getEntityResolver().getObjEntity(
- id.getEntityName());
- Map<String, Object> parameters = new HashMap<String, Object>();
- parameters.put("table", entity.getDbEntityName());
- parameters.put("column", dbAttribute);
- parameters.put("value", newValue);
- parameters.put("idColumn", id.getIdSnapshot().keySet().iterator().next());
- parameters.put("id", id.getIdSnapshot().values().iterator().next());
- updateQuery.setParameters(parameters);
-
- getDomain().onQuery(null, updateQuery);
- }
-
- private void deleteRow(ObjectId id) {
- SQLTemplate deleteQuery = new SQLTemplate(
- id.getEntityName(),
- "DELETE FROM $table " + "WHERE $idColumn = #bind($id)");
-
- ObjEntity entity = getDomain().getEntityResolver().getObjEntity(
- id.getEntityName());
- Map<String, Object> parameters = new HashMap<String, Object>();
- parameters.put("table", entity.getDbEntityName());
- parameters.put("idColumn", id.getIdSnapshot().keySet().iterator().next());
- parameters.put("id", id.getIdSnapshot().values().iterator().next());
- deleteQuery.setParameters(parameters);
+ public void execute() {
+ // this must trigger a fetch
+ artist.setDateOfBirth(new Date());
+ }
+ });
- getDomain().onQuery(null, deleteQuery);
+ assertEquals(1, queries);
+
+ assertEquals(PersistenceState.MODIFIED, artist.getPersistenceState());
+ assertNotNull(artist.readPropertyDirectly("artistName"));
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateTest.java?rev=956338&r1=956337&r2=956338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateTest.java Sun Jun 20 09:27:37 2010
@@ -26,42 +26,99 @@ import java.util.Map;
import org.apache.cayenne.Cayenne;
import org.apache.cayenne.DataRow;
-import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.dba.frontbase.FrontBaseAdapter;
import org.apache.cayenne.dba.openbase.OpenBaseAdapter;
+import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.EntityResult;
import org.apache.cayenne.map.SQLResult;
import org.apache.cayenne.query.CapsStrategy;
import org.apache.cayenne.query.SQLTemplate;
+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.testdo.testmap.CompoundFkTestEntity;
import org.apache.cayenne.testdo.testmap.CompoundPkTestEntity;
import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.CayenneCase;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
-/**
- */
-public class DataContextSQLTemplateTest extends CayenneCase {
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataContextSQLTemplateTest extends ServerCase {
+ @Inject
protected DataContext context;
+ @Inject
+ protected DBHelper dbHelper;
+
+ @Inject
+ protected SQLTemplateCustomizer sqlTemplateCustomizer;
+
+ protected TableHelper tPainting;
+ protected TableHelper tArtist;
+ protected TableHelper tCompoundPkTest;
+ protected TableHelper tCompoundFkTest;
+
@Override
- protected void setUp() throws Exception {
- super.setUp();
- deleteTestData();
- context = createDataContext();
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("PAINTING_INFO");
+ dbHelper.deleteAll("PAINTING");
+ dbHelper.deleteAll("ARTIST_EXHIBIT");
+ dbHelper.deleteAll("ARTIST");
+ dbHelper.deleteAll("COMPOUND_FK_TEST");
+ dbHelper.deleteAll("COMPOUND_PK_TEST");
+
+ tArtist = new TableHelper(dbHelper, "ARTIST");
+ tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+
+ tPainting = new TableHelper(dbHelper, "PAINTING");
+ tPainting.setColumns(
+ "PAINTING_ID",
+ "PAINTING_TITLE",
+ "ARTIST_ID",
+ "ESTIMATED_PRICE");
+
+ tCompoundPkTest = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+ tCompoundPkTest.setColumns("KEY1", "KEY2");
+
+ tCompoundFkTest = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+ tCompoundFkTest.setColumns("PKEY", "F_KEY1", "F_KEY2");
+ }
+
+ protected void createFourArtists() throws Exception {
+ tArtist.insert(11, "artist2");
+ tArtist.insert(101, "artist3");
+ tArtist.insert(201, "artist4");
+ tArtist.insert(3001, "artist5");
+ }
+
+ protected void createFourArtistsAndThreePaintingsDataSet() throws Exception {
+ createFourArtists();
+
+ tPainting.insert(6, "p_artist3", 11, 1000);
+ tPainting.insert(7, "p_artist2", 101, 2000);
+ tPainting.insert(8, "p_artist4", null, 3000);
+ }
+
+ protected void createTwoCompoundPKsAndCompoundFKsDataSet() throws Exception {
+ tCompoundPkTest.insert("a1", "a2");
+ tCompoundPkTest.insert("b1", "b2");
+
+ tCompoundFkTest.insert(6, "a1", "a2");
+ tCompoundFkTest.insert(7, "b1", "b2");
}
public void testSQLResultSetMappingMixed() throws Exception {
- createTestData("prepare");
+ createFourArtistsAndThreePaintingsDataSet();
String sql = "SELECT #result('t0.ARTIST_ID' 'long' 'X'), #result('t0.ARTIST_NAME' 'String' 'Y'), #result('t0.DATE_OF_BIRTH' 'Date' 'Z'), #result('count(t1.PAINTING_ID)' 'int' 'C') "
+ "FROM ARTIST t0 LEFT JOIN PAINTING t1 ON (t0.ARTIST_ID = t1.ARTIST_ID) "
+ "GROUP BY t0.ARTIST_ID, t0.ARTIST_NAME, t0.DATE_OF_BIRTH "
+ "ORDER BY t0.ARTIST_ID";
- DataMap map = getDomain().getMap("testmap");
+ DataMap map = context.getEntityResolver().getDataMap("testmap");
SQLTemplate query = new SQLTemplate(map, sql, false);
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
@@ -75,7 +132,7 @@ public class DataContextSQLTemplateTest
rsMap.addColumnResult("C");
query.setResult(rsMap);
- List objects = createDataContext().performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(4, objects.size());
Object o1 = objects.get(0);
@@ -97,11 +154,11 @@ public class DataContextSQLTemplateTest
}
public void testSQLResultSetMappingScalar() throws Exception {
- createTestData("testSQLResultSetMappingScalar");
+ createFourArtists();
String sql = "SELECT count(1) AS X FROM ARTIST";
- DataMap map = getDomain().getMap("testmap");
+ DataMap map = context.getEntityResolver().getDataMap("testmap");
SQLTemplate query = new SQLTemplate(map, sql, false);
query.setTemplate(
FrontBaseAdapter.class.getName(),
@@ -115,7 +172,7 @@ public class DataContextSQLTemplateTest
rsMap.addColumnResult("X");
query.setResult(rsMap);
- List objects = createDataContext().performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
Object o = objects.get(0);
@@ -124,11 +181,11 @@ public class DataContextSQLTemplateTest
}
public void testSQLResultSetMappingScalarArray() throws Exception {
- createTestData("testSQLResultSetMappingScalar");
+ createFourArtists();
String sql = "SELECT count(1) AS X, 77 AS Y FROM ARTIST";
- DataMap map = getDomain().getMap("testmap");
+ DataMap map = context.getEntityResolver().getDataMap("testmap");
SQLTemplate query = new SQLTemplate(map, sql, false);
query.setTemplate(
FrontBaseAdapter.class.getName(),
@@ -143,7 +200,7 @@ public class DataContextSQLTemplateTest
rsMap.addColumnResult("Y");
query.setResult(rsMap);
- List objects = createDataContext().performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
Object o = objects.get(0);
@@ -157,82 +214,77 @@ public class DataContextSQLTemplateTest
}
public void testColumnNamesCapitalization() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtistsAndThreePaintingsDataSet();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Artist.class, template);
query.setColumnNamesCapitalization(CapsStrategy.LOWER);
query.setFetchingDataRows(true);
- List rows = context.performQuery(query);
+ List<DataRow> rows = context.performQuery(query);
- DataRow row1 = (DataRow) rows.get(0);
+ DataRow row1 = rows.get(0);
assertFalse(row1.containsKey("ARTIST_ID"));
assertTrue(row1.containsKey("artist_id"));
- DataRow row2 = (DataRow) rows.get(1);
+ DataRow row2 = rows.get(1);
assertFalse(row2.containsKey("ARTIST_ID"));
assertTrue(row2.containsKey("artist_id"));
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
- List rowsUpper = context.performQuery(query);
+ List<DataRow> rowsUpper = context.performQuery(query);
- DataRow row3 = (DataRow) rowsUpper.get(0);
+ DataRow row3 = rowsUpper.get(0);
assertFalse(row3.containsKey("artist_id"));
assertTrue(row3.containsKey("ARTIST_ID"));
- DataRow row4 = (DataRow) rowsUpper.get(1);
+ DataRow row4 = rowsUpper.get(1);
assertFalse(row4.containsKey("artist_id"));
assertTrue(row4.containsKey("ARTIST_ID"));
}
public void testFetchDataRows() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Artist.class, template);
- getSQLTemplateBuilder().updateSQLTemplate(query);
+ sqlTemplateCustomizer.updateSQLTemplate(query);
query.setFetchingDataRows(true);
- List rows = context.performQuery(query);
- assertEquals(DataContextCase.artistCount, rows.size());
- assertTrue(
- "Expected DataRow, got this: " + rows.get(1),
- rows.get(1) instanceof DataRow);
+ List<DataRow> rows = context.performQuery(query);
+ assertEquals(4, rows.size());
- DataRow row2 = (DataRow) rows.get(1);
+ DataRow row2 = rows.get(1);
assertEquals(3, row2.size());
Object id = row2.get("ARTIST_ID");
- assertEquals(new Integer(33002), new Integer(id.toString()));
+ assertEquals(new Integer(101), new Integer(id.toString()));
}
public void testFetchObjects() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
query.setFetchingDataRows(false);
- List objects = context.performQuery(query);
- assertEquals(DataContextCase.artistCount, objects.size());
+ List<?> objects = context.performQuery(query);
+ assertEquals(4, objects.size());
assertTrue(objects.get(1) instanceof Artist);
Artist artist2 = (Artist) objects.get(1);
- assertEquals("artist2", artist2.getArtistName());
+ assertEquals("artist3", artist2.getArtistName());
}
public void testBindObjectEqualShort() throws Exception {
- createTestData("prepare");
-
- ObjectContext context = createDataContext();
+ createFourArtistsAndThreePaintingsDataSet();
- Artist a = Cayenne.objectForPK(context, Artist.class, 33002);
+ Artist a = Cayenne.objectForPK(context, Artist.class, 101);
String template = "SELECT * FROM PAINTING "
+ "WHERE #bindObjectEqual($a) ORDER BY PAINTING_ID";
@@ -240,19 +292,17 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
Painting p = (Painting) objects.get(0);
- assertEquals(33002, Cayenne.intPKForObject(p));
+ assertEquals(7, Cayenne.intPKForObject(p));
}
public void testBindObjectNotEqualShort() throws Exception {
- createTestData("prepare");
+ createFourArtistsAndThreePaintingsDataSet();
- ObjectContext context = createDataContext();
-
- Artist a = Cayenne.objectForPK(context, Artist.class, 33002);
+ Artist a = Cayenne.objectForPK(context, Artist.class, 101);
String template = "SELECT * FROM PAINTING "
+ "WHERE #bindObjectNotEqual($a) ORDER BY PAINTING_ID";
@@ -260,22 +310,20 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
// null comparison is unpredictable across DB's ... some would return true on null
// <> value, some - false
assertTrue(objects.size() == 1 || objects.size() == 2);
Painting p = (Painting) objects.get(0);
- assertEquals(33001, Cayenne.intPKForObject(p));
+ assertEquals(6, Cayenne.intPKForObject(p));
}
public void testBindObjectEqualFull() throws Exception {
- createTestData("prepare");
-
- ObjectContext context = createDataContext();
+ createFourArtistsAndThreePaintingsDataSet();
- Artist a = Cayenne.objectForPK(context, Artist.class, 33002);
+ Artist a = Cayenne.objectForPK(context, Artist.class, 101);
String template = "SELECT * FROM PAINTING t0"
+ " WHERE #bindObjectEqual($a [ 't0.ARTIST_ID' ] [ 'ARTIST_ID' ] ) ORDER BY PAINTING_ID";
@@ -283,19 +331,17 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
Painting p = (Painting) objects.get(0);
- assertEquals(33002, Cayenne.intPKForObject(p));
+ assertEquals(7, Cayenne.intPKForObject(p));
}
public void testBindObjectEqualFullNonArray() throws Exception {
- createTestData("prepare");
+ createFourArtistsAndThreePaintingsDataSet();
- ObjectContext context = createDataContext();
-
- Artist a = Cayenne.objectForPK(context, Artist.class, 33002);
+ Artist a = Cayenne.objectForPK(context, Artist.class, 101);
String template = "SELECT * FROM PAINTING t0"
+ " WHERE #bindObjectEqual($a 't0.ARTIST_ID' 'ARTIST_ID' ) ORDER BY PAINTING_ID";
@@ -303,17 +349,15 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
Painting p = (Painting) objects.get(0);
- assertEquals(33002, Cayenne.intPKForObject(p));
+ assertEquals(7, Cayenne.intPKForObject(p));
}
public void testBindObjectEqualNull() throws Exception {
- createTestData("prepare");
-
- ObjectContext context = createDataContext();
+ createFourArtistsAndThreePaintingsDataSet();
String template = "SELECT * FROM PAINTING t0"
+ " WHERE #bindObjectEqual($a [ 't0.ARTIST_ID' ] [ 'ARTIST_ID' ] ) ORDER BY PAINTING_ID";
@@ -321,19 +365,17 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", null));
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(1, objects.size());
Painting p = (Painting) objects.get(0);
- assertEquals(33003, Cayenne.intPKForObject(p));
+ assertEquals(8, Cayenne.intPKForObject(p));
}
public void testBindObjectNotEqualFull() throws Exception {
- createTestData("prepare");
+ createFourArtistsAndThreePaintingsDataSet();
- ObjectContext context = createDataContext();
-
- Artist a = Cayenne.objectForPK(context, Artist.class, 33002);
+ Artist a = Cayenne.objectForPK(context, Artist.class, 101);
String template = "SELECT * FROM PAINTING t0"
+ " WHERE #bindObjectNotEqual($a [ 't0.ARTIST_ID' ] [ 'ARTIST_ID' ] ) ORDER BY PAINTING_ID";
@@ -341,19 +383,17 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
// null comparison is unpredictable across DB's ... some would return true on null
// <> value, some - false
assertTrue(objects.size() == 1 || objects.size() == 2);
Painting p = (Painting) objects.get(0);
- assertEquals(33001, Cayenne.intPKForObject(p));
+ assertEquals(6, Cayenne.intPKForObject(p));
}
public void testBindObjectEqualCompound() throws Exception {
- createTestData("testBindObjectEqualCompound");
-
- ObjectContext context = createDataContext();
+ createTwoCompoundPKsAndCompoundFKsDataSet();
Map<String, String> pk = new HashMap<String, String>();
pk.put(CompoundPkTestEntity.KEY1_PK_COLUMN, "a1");
@@ -370,17 +410,15 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<CompoundFkTestEntity> objects = context.performQuery(query);
assertEquals(1, objects.size());
- CompoundFkTestEntity p = (CompoundFkTestEntity) objects.get(0);
- assertEquals(33001, Cayenne.intPKForObject(p));
+ CompoundFkTestEntity p = objects.get(0);
+ assertEquals(6, Cayenne.intPKForObject(p));
}
public void testBindObjectNotEqualCompound() throws Exception {
- createTestData("testBindObjectEqualCompound");
-
- ObjectContext context = createDataContext();
+ createTwoCompoundPKsAndCompoundFKsDataSet();
Map<String, String> pk = new HashMap<String, String>();
pk.put(CompoundPkTestEntity.KEY1_PK_COLUMN, "a1");
@@ -397,17 +435,15 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", a));
- List objects = context.performQuery(query);
+ List<CompoundFkTestEntity> objects = context.performQuery(query);
assertEquals(1, objects.size());
- CompoundFkTestEntity p = (CompoundFkTestEntity) objects.get(0);
- assertEquals(33002, Cayenne.intPKForObject(p));
+ CompoundFkTestEntity p = objects.get(0);
+ assertEquals(7, Cayenne.intPKForObject(p));
}
public void testBindObjectNotEqualNull() throws Exception {
- createTestData("prepare");
-
- ObjectContext context = createDataContext();
+ createFourArtistsAndThreePaintingsDataSet();
String template = "SELECT * FROM PAINTING t0"
+ " WHERE #bindObjectNotEqual($a [ 't0.ARTIST_ID' ] [ 'ARTIST_ID' ] ) ORDER BY PAINTING_ID";
@@ -415,20 +451,18 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("a", null));
- List objects = context.performQuery(query);
+ List<Painting> objects = context.performQuery(query);
assertEquals(2, objects.size());
- Painting p1 = (Painting) objects.get(0);
- assertEquals(33001, Cayenne.intPKForObject(p1));
+ Painting p1 = objects.get(0);
+ assertEquals(6, Cayenne.intPKForObject(p1));
- Painting p2 = (Painting) objects.get(1);
- assertEquals(33002, Cayenne.intPKForObject(p2));
+ Painting p2 = objects.get(1);
+ assertEquals(7, Cayenne.intPKForObject(p2));
}
-
- public void testBindEqualNull() throws Exception {
- createTestData("prepare");
- ObjectContext context = createDataContext();
+ public void testBindEqualNull() throws Exception {
+ createFourArtistsAndThreePaintingsDataSet();
String template = "SELECT * FROM PAINTING t0"
+ " WHERE t0.ARTIST_ID #bindEqual($id) ORDER BY PAINTING_ID";
@@ -436,105 +470,104 @@ public class DataContextSQLTemplateTest
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setParameters(Collections.singletonMap("id", null));
- List objects = context.performQuery(query);
+ List<Painting> objects = context.performQuery(query);
assertEquals(1, objects.size());
- Painting p = (Painting) objects.get(0);
- assertEquals(33003, Cayenne.intPKForObject(p));
+ Painting p = objects.get(0);
+ assertEquals(8, Cayenne.intPKForObject(p));
}
public void testFetchLimit() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
- int fetchLimit = 3;
+ int fetchLimit = 2;
// sanity check
- assertTrue(fetchLimit < DataContextCase.artistCount);
+ assertTrue(fetchLimit < 4);
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
query.setFetchLimit(fetchLimit);
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(fetchLimit, objects.size());
assertTrue(objects.get(0) instanceof Artist);
}
public void testFetchOffset() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
- int fetchOffset = 3;
+ int fetchOffset = 2;
// sanity check
- assertTrue(fetchOffset < DataContextCase.artistCount);
+ assertTrue(fetchOffset < 4);
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
query.setFetchOffset(fetchOffset);
- List objects = context.performQuery(query);
- assertEquals(DataContextCase.artistCount - fetchOffset, objects.size());
+ List<?> objects = context.performQuery(query);
+ assertEquals(4 - fetchOffset, objects.size());
assertTrue(objects.get(0) instanceof Artist);
}
public void testFetchOffsetFetchLimit() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
query.setFetchOffset(1);
query.setFetchLimit(2);
- List objects = context.performQuery(query);
+ List<?> objects = context.performQuery(query);
assertEquals(2, objects.size());
assertTrue(objects.get(0) instanceof Artist);
}
public void testPageSize() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
int pageSize = 3;
// sanity check
- assertTrue(pageSize < DataContextCase.artistCount);
+ assertTrue(pageSize < 4);
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
query.setPageSize(pageSize);
- List objects = context.performQuery(query);
-
- assertEquals(DataContextCase.artistCount, objects.size());
+ List<?> objects = context.performQuery(query);
+
+ assertEquals(4, objects.size());
assertTrue(objects.get(0) instanceof Artist);
- assertTrue(objects instanceof IncrementalFaultList);
- IncrementalFaultList pagedList = (IncrementalFaultList) objects;
- assertEquals(DataContextCase.artistCount - pageSize, pagedList
- .getUnfetchedObjects());
+ assertTrue(objects instanceof IncrementalFaultList<?>);
+ IncrementalFaultList<?> pagedList = (IncrementalFaultList<?>) objects;
+ assertEquals(4 - pageSize, pagedList.getUnfetchedObjects());
// check if we can resolve subsequent pages
Artist artist = (Artist) objects.get(pageSize);
- int expectUnresolved = DataContextCase.artistCount - pageSize - pageSize;
+ int expectUnresolved = 4 - pageSize - pageSize;
if (expectUnresolved < 0) {
expectUnresolved = 0;
}
assertEquals(expectUnresolved, pagedList.getUnfetchedObjects());
- assertEquals("artist" + (pageSize + 1), artist.getArtistName());
+ assertEquals("artist" + (pageSize + 2), artist.getArtistName());
}
public void testIteratedQuery() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
@@ -548,31 +581,30 @@ public class DataContextSQLTemplateTest
DataRow row = (DataRow) it.nextRow();
assertEquals(3, row.size());
- Object id = row.get("ARTIST_ID");
- assertEquals(new Integer((int) (33000 + i)), new Integer(id.toString()));
+ assertEquals("artist" + (1 + i), row.get("ARTIST_NAME"));
}
- assertEquals(DataContextCase.artistCount, i);
+ assertEquals(4, i);
}
finally {
it.close();
}
}
- public void testQueryWithLineBreakAfterMacroCAY726() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ public void testQueryWithLineBreakAfterMacro() throws Exception {
+ createFourArtists();
// see CAY-726 for details
String template = "SELECT #result('count(*)' 'int' 'X')"
+ System.getProperty("line.separator")
+ "FROM ARTIST";
- SQLTemplate query = getSQLTemplateBuilder().createSQLTemplate(
+ SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
Artist.class,
template);
query.setFetchingDataRows(true);
- List result = context.performQuery(query);
+ List<?> result = context.performQuery(query);
- assertEquals(new Integer(25), ((Map) result.get(0)).get("X"));
+ assertEquals(4, ((DataRow) result.get(0)).get("X"));
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java?rev=956338&r1=956337&r2=956338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java Sun Jun 20 09:27:37 2010
@@ -78,7 +78,7 @@ public class DataContextTest extends Ser
protected TableHelper tArtist;
protected TableHelper tExhibit;
protected TableHelper tGallery;
- protected TableHelper tPaining;
+ protected TableHelper tPainting;
@Override
protected void setUpAfterInjection() throws Exception {
@@ -98,8 +98,8 @@ public class DataContextTest extends Ser
tGallery = new TableHelper(dbHelper, "GALLERY");
tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
- tPaining = new TableHelper(dbHelper, "PAINTING");
- tPaining.setColumns(
+ tPainting = new TableHelper(dbHelper, "PAINTING");
+ tPainting.setColumns(
"PAINTING_ID",
"PAINTING_TITLE",
"ARTIST_ID",
@@ -144,13 +144,13 @@ public class DataContextTest extends Ser
protected void createArtistsAndPaintingsDataSet() throws Exception {
createArtistsDataSet();
- tPaining.insert(33001, "P_artist1", 33001, 1000);
- tPaining.insert(33002, "P_artist2", 33002, 2000);
- tPaining.insert(33003, "P_artist3", 33003, 3000);
- tPaining.insert(33004, "P_artist4", 33004, 4000);
- tPaining.insert(33005, "P_artist5", 33005, 5000);
- tPaining.insert(33006, "P_artist11", 33006, 11000);
- tPaining.insert(33007, "P_artist21", 33007, 21000);
+ tPainting.insert(33001, "P_artist1", 33001, 1000);
+ tPainting.insert(33002, "P_artist2", 33002, 2000);
+ tPainting.insert(33003, "P_artist3", 33003, 3000);
+ tPainting.insert(33004, "P_artist4", 33004, 4000);
+ tPainting.insert(33005, "P_artist5", 33005, 5000);
+ tPainting.insert(33006, "P_artist11", 33006, 11000);
+ tPainting.insert(33007, "P_artist21", 33007, 21000);
}
public void testCurrentSnapshot1() throws Exception {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataNodeQueriesTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataNodeQueriesTest.java?rev=956338&r1=956337&r2=956338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataNodeQueriesTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataNodeQueriesTest.java Sun Jun 20 09:27:37 2010
@@ -19,37 +19,56 @@
package org.apache.cayenne.access;
-import java.sql.Connection;
import java.sql.Date;
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.di.Inject;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.query.Query;
-import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.CayenneCase;
-
-/**
- * DataNode test cases.
- *
- */
-public class DataNodeQueriesTest extends CayenneCase {
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataNodeQueriesTest extends ServerCase {
+
+ @Inject
+ protected DataNode node;
+
+ @Inject
+ protected DBHelper dbHelper;
+
+ @Inject
+ protected SQLTemplateCustomizer sqlTemplateCustomizer;
+
+ protected TableHelper tArtist;
@Override
- protected void setUp() throws Exception {
- super.setUp();
- deleteTestData();
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("PAINTING_INFO");
+ dbHelper.deleteAll("PAINTING");
+ dbHelper.deleteAll("ARTIST_EXHIBIT");
+ dbHelper.deleteAll("ARTIST");
+
+ tArtist = new TableHelper(dbHelper, "ARTIST");
+ tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
}
- public void testCreatePkSupportForMapEntities() throws Exception {
- getAccessStack().createPKSupport();
+ protected void createFourArtists() throws Exception {
+ tArtist.insert(11, "artist2");
+ tArtist.insert(101, "artist3");
+ tArtist.insert(201, "artist4");
+ tArtist.insert(3001, "artist5");
+ }
- DataNode node = getNode();
+ public void testCreatePkSupportForMapEntities() throws Exception {
DbEntity artistEnt = node.getEntityResolver().getDbEntity("ARTIST");
assertNotNull(node.getAdapter().getPkGenerator().generatePk(
@@ -67,118 +86,103 @@ public class DataNodeQueriesTest extends
+ "VALUES (#bind($id), #bind($name), #bind($dob 'DATE'))";
SQLTemplate query = new SQLTemplate(Object.class, template);
- Map bindings = new HashMap();
+ Map<String, Object> bindings = new HashMap<String, Object>();
bindings.put("id", 1l);
bindings.put("name", "a1");
bindings.put("dob", new Date(System.currentTimeMillis()));
query.setParameters(bindings);
MockOperationObserver observer = new MockOperationObserver();
- getNode().performQueries(Collections.singletonList((Query) query), observer);
+ node.performQueries(Collections.singletonList((Query) query), observer);
assertNotNull(observer.countsForQuery(query));
assertEquals(1, observer.countsForQuery(query)[0]);
// check the data
- MockOperationObserver checkObserver = new MockOperationObserver();
- SelectQuery checkQuery = new SelectQuery(Artist.class);
- getDomain().performQueries(Collections.singletonList(checkQuery), checkObserver);
- List data = checkObserver.rowsForQuery(checkQuery);
- assertEquals(1, data.size());
- Map row = (Map) data.get(0);
- assertEquals(bindings.get("id"), row.get("ARTIST_ID"));
- assertEquals(bindings.get("name"), row.get("ARTIST_NAME"));
- // to compare dates we need to create the binding correctly
- // assertEquals(bindings.get("dob"), row.get("DATE_OF_BIRTH"));
+
+ assertEquals(1, tArtist.getRowCount());
+ assertEquals(1l, tArtist.getLong("ARTIST_ID"));
+ assertEquals("a1", tArtist.getString("ARTIST_NAME").trim());
}
public void testPerfomQueriesSelectingSQLTemplate1() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT #result('ARTIST_ID' 'int') FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Object.class, template);
MockOperationObserver observer = new MockOperationObserver();
- getNode().performQueries(Collections.singletonList((Query) query), observer);
+ node.performQueries(Collections.singletonList((Query) query), observer);
- List data = observer.rowsForQuery(query);
- assertEquals(DataContextCase.artistCount, data.size());
- Map row = (Map) data.get(2);
+ List<DataRow> data = observer.rowsForQuery(query);
+ assertEquals(4, data.size());
+ DataRow row = data.get(2);
assertEquals(1, row.size());
- assertEquals(new Integer(33003), row.get("ARTIST_ID"));
+ assertEquals(201, row.get("ARTIST_ID"));
}
public void testPerfomQueriesSelectingSQLTemplate2() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Object.class, template);
- getSQLTemplateBuilder().updateSQLTemplate(query);
+ sqlTemplateCustomizer.updateSQLTemplate(query);
MockOperationObserver observer = new MockOperationObserver();
- getNode().performQueries(Collections.singletonList((Query) query), observer);
+ node.performQueries(Collections.singletonList((Query) query), observer);
- List data = observer.rowsForQuery(query);
- assertEquals(DataContextCase.artistCount, data.size());
- Map row = (Map) data.get(2);
+ List<DataRow> data = observer.rowsForQuery(query);
+ assertEquals(4, data.size());
+ DataRow row = data.get(2);
assertEquals(3, row.size());
Number id = (Number) row.get("ARTIST_ID");
assertNotNull(id);
- assertEquals("Can't find ARTIST_ID: " + row, 33003, id.intValue());
+ assertEquals(201, id.intValue());
}
public void testPerfomQueriesSelectingSQLTemplateAlias() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String template = "SELECT #result('ARTIST_ID' 'int' 'A') FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = new SQLTemplate(Object.class, template);
+ Query query = new SQLTemplate(Object.class, template);
MockOperationObserver observer = new MockOperationObserver();
- getNode().performQueries(Collections.singletonList((Query) query), observer);
+ node.performQueries(Collections.singletonList(query), observer);
- List data = observer.rowsForQuery(query);
- assertEquals(DataContextCase.artistCount, data.size());
- Map row = (Map) data.get(2);
+ List<DataRow> data = observer.rowsForQuery(query);
+ assertEquals(4, data.size());
+ DataRow row = data.get(2);
assertEquals(1, row.size());
- assertEquals(new Integer(33003), row.get("A"));
+ assertEquals(201, row.get("A"));
}
public void testRunMultiLineSQLTemplateUNIX() throws Exception {
String templateString = "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME)"
+ "\n"
+ "VALUES (1, 'A')";
- runSQL(templateString);
+ Query template = new SQLTemplate(Object.class, templateString);
+ node.performQueries(
+ Collections.singletonList(template),
+ new MockOperationObserver());
}
public void testRunMultiLineSQLTemplateWindows() throws Exception {
String templateString = "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME)"
+ "\r\n"
+ "VALUES (1, 'A')";
- runSQL(templateString);
+ Query template = new SQLTemplate(Object.class, templateString);
+ node.performQueries(
+ Collections.singletonList(template),
+ new MockOperationObserver());
}
public void testRunMultiLineSQLTemplateMac() throws Exception {
String templateString = "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME)"
+ "\r"
+ "VALUES (1, 'A')";
- runSQL(templateString);
+ Query template = new SQLTemplate(Object.class, templateString);
+ node.performQueries(
+ Collections.singletonList(template),
+ new MockOperationObserver());
}
-
- /**
- * Testing that SQLTemplate that is entered on multiple lines can be executed. CAY-269
- * shows that some databases are very picky about it.
- */
- private void runSQL(String templateString) throws Exception {
- SQLTemplate template = new SQLTemplate(Object.class, templateString);
- SQLAction action = getNode().getAdapter().getAction(template, getNode());
-
- Connection c = getConnection();
- try {
- action.performAction(c, new MockOperationObserver());
- }
- finally {
- c.close();
- }
- }
-
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataRowUtilsTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataRowUtilsTest.java?rev=956338&r1=956337&r2=956338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataRowUtilsTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataRowUtilsTest.java Sun Jun 20 09:27:37 2010
@@ -22,37 +22,65 @@ package org.apache.cayenne.access;
import java.util.List;
import org.apache.cayenne.DataRow;
-import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.reflect.ArcProperty;
import org.apache.cayenne.reflect.ClassDescriptor;
+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.testdo.testmap.Gallery;
import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.CayenneCase;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
-/**
- */
-public class DataRowUtilsTest extends CayenneCase {
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataRowUtilsTest extends ServerCase {
+ @Inject
protected DataContext context;
+ @Inject
+ protected DBHelper dbHelper;
+
+ protected TableHelper tArtist;
+ protected TableHelper tPainting;
+
@Override
- protected void setUp() throws Exception {
- super.setUp();
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("PAINTING_INFO");
+ dbHelper.deleteAll("PAINTING");
+ dbHelper.deleteAll("ARTIST_EXHIBIT");
+ dbHelper.deleteAll("ARTIST");
+
+ tArtist = new TableHelper(dbHelper, "ARTIST");
+ tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+
+ tPainting = new TableHelper(dbHelper, "PAINTING");
+ tPainting.setColumns(
+ "PAINTING_ID",
+ "PAINTING_TITLE",
+ "ARTIST_ID",
+ "ESTIMATED_PRICE");
+ }
+
+ protected void createOneArtist() throws Exception {
+ tArtist.insert(11, "artist2");
+ }
- deleteTestData();
- context = createDataContext();
+ protected void createOneArtistAndOnePainting() throws Exception {
+ tArtist.insert(11, "artist2");
+ tPainting.insert(6, "p_artist2", 11, 1000);
}
public void testMerge() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createOneArtist();
String n1 = "changed";
String n2 = "changed again";
- SelectQuery artistQ = new SelectQuery(Artist.class, Expression
- .fromString("artistName = 'artist1'"));
+ SelectQuery artistQ = new SelectQuery(Artist.class);
Artist a1 = (Artist) context.performQuery(artistQ).get(0);
a1.setArtistName(n1);
@@ -71,24 +99,26 @@ public class DataRowUtilsTest extends Ca
}
public void testIsToOneTargetModified() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createOneArtist();
ClassDescriptor d = context.getEntityResolver().getClassDescriptor("Painting");
ArcProperty toArtist = (ArcProperty) d.getProperty("toArtist");
- SelectQuery artistQ = new SelectQuery(Artist.class, Expression
- .fromString("artistName = 'artist2'"));
- Artist anotherArtist = (Artist) context.performQuery(artistQ).get(0);
+ Artist artist2 = (Artist) context
+ .performQuery(new SelectQuery(Artist.class))
+ .get(0);
Painting painting = context.newObject(Painting.class);
painting.setPaintingTitle("PX");
- painting.setToArtist(anotherArtist);
+ painting.setToArtist(artist2);
context.commitChanges();
- artistQ = new SelectQuery(Artist.class, Expression
- .fromString("artistName = 'artist1'"));
- Artist artist = (Artist) context.performQuery(artistQ).get(0);
- assertNotSame(artist, painting.getToArtist());
+ tArtist.insert(119, "artist3");
+ SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
+ Artist.ARTIST_NAME_PROPERTY,
+ "artist3"));
+ Artist artist3 = (Artist) context.performQuery(query).get(0);
+ assertNotSame(artist3, painting.getToArtist());
ObjectDiff diff = context.getObjectStore().registerDiff(
painting.getObjectId(),
@@ -96,17 +126,17 @@ public class DataRowUtilsTest extends Ca
assertFalse(DataRowUtils.isToOneTargetModified(toArtist, painting, diff));
- painting.setToArtist(artist);
+ painting.setToArtist(artist3);
assertTrue(DataRowUtils.isToOneTargetModified(toArtist, painting, diff));
}
public void testIsToOneTargetModifiedWithNewTarget() throws Exception {
- createTestData("testIsToOneTargetModifiedWithNewTarget");
+ createOneArtistAndOnePainting();
// add NEW gallery to painting
- List paintings = context.performQuery(new SelectQuery(Painting.class));
+ List<Painting> paintings = context.performQuery(new SelectQuery(Painting.class));
assertEquals(1, paintings.size());
- Painting p1 = (Painting) paintings.get(0);
+ Painting p1 = paintings.get(0);
ClassDescriptor d = context.getEntityResolver().getClassDescriptor("Painting");
ArcProperty toGallery = (ArcProperty) d.getProperty("toGallery");
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java?rev=956338&r1=956337&r2=956338&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionTest.java Sun Jun 20 09:27:37 2010
@@ -26,56 +26,98 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.cayenne.access.DataContextCase;
+import javax.sql.DataSource;
+
+import org.apache.cayenne.DataRow;
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.MockOperationObserver;
-import org.apache.cayenne.access.QueryResult;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.di.Inject;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.query.SortOrder;
+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.CayenneCase;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class SQLTemplateActionTest extends ServerCase {
+
+ @Inject
+ protected DataSource dataSource;
+
+ @Inject
+ protected DataNode node;
+
+ @Inject
+ protected DbAdapter adapter;
+
+ @Inject
+ protected ObjectContext objectContext;
-/**
- */
-public class SQLTemplateActionTest extends CayenneCase {
+ @Inject
+ protected DBHelper dbHelper;
+
+ @Inject
+ protected SQLTemplateCustomizer sqlTemplateCustomizer;
+
+ protected TableHelper tArtist;
@Override
- protected void setUp() throws Exception {
- super.setUp();
- deleteTestData();
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("PAINTING_INFO");
+ dbHelper.deleteAll("PAINTING");
+ dbHelper.deleteAll("ARTIST_EXHIBIT");
+ dbHelper.deleteAll("ARTIST");
+
+ tArtist = new TableHelper(dbHelper, "ARTIST");
+ tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
+ }
+
+ protected void createFourArtists() throws Exception {
+
+ Date date = new Date(System.currentTimeMillis());
+
+ tArtist.insert(11, "artist2", date);
+ tArtist.insert(101, "artist3", date);
+ tArtist.insert(201, "artist4", date);
+ tArtist.insert(3001, "artist5", date);
}
public void testProperties() throws Exception {
DbAdapter adapter = new JdbcAdapter();
SQLTemplate template = new SQLTemplate(Object.class, "AAAAA");
- SQLTemplateAction action = new SQLTemplateAction(template, adapter, getDomain()
+ SQLTemplateAction action = new SQLTemplateAction(template, adapter, objectContext
.getEntityResolver());
assertSame(adapter, action.getAdapter());
assertSame(template, action.getQuery());
}
public void testExecuteSelect() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
String templateString = "SELECT * FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- getSQLTemplateBuilder().updateSQLTemplate(template);
+ sqlTemplateCustomizer.updateSQLTemplate(template);
- Map bindings = new HashMap();
- bindings.put("id", new Long(33005l));
+ Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.put("id", 201l);
template.setParameters(bindings);
// must ensure the right SQLTemplateAction is created
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction plan = adapter.getAction(template, getNode());
+
+ SQLAction plan = adapter.getAction(template, node);
assertTrue(plan instanceof SQLTemplateAction);
MockOperationObserver observer = new MockOperationObserver();
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
plan.performAction(c, observer);
@@ -84,10 +126,10 @@ public class SQLTemplateActionTest exten
c.close();
}
- List rows = observer.rowsForQuery(template);
+ List<DataRow> rows = observer.rowsForQuery(template);
assertNotNull(rows);
assertEquals(1, rows.size());
- Map row = (Map) rows.get(0);
+ DataRow row = rows.get(0);
// In the absence of ObjEntity most DB's return a Long here, except for Oracle
// that has no BIGINT type and
@@ -95,29 +137,26 @@ public class SQLTemplateActionTest exten
Number id = (Number) row.get("ARTIST_ID");
assertNotNull(id);
assertEquals(((Number) bindings.get("id")).longValue(), id.longValue());
- assertEquals("artist5", row.get("ARTIST_NAME"));
+ assertEquals("artist4", row.get("ARTIST_NAME"));
assertTrue(row.containsKey("DATE_OF_BIRTH"));
}
public void testSelectUtilDate() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
- // update data set to include dates....
- setDate(new java.util.Date(), 33006);
+ createFourArtists();
String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.util.Date' 'DOB') "
+ "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- getSQLTemplateBuilder().updateSQLTemplate(template);
+ sqlTemplateCustomizer.updateSQLTemplate(template);
- Map bindings = new HashMap();
- bindings.put("id", new Integer(33006));
+ Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.put("id", 101);
template.setParameters(bindings);
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction plan = adapter.getAction(template, getNode());
+ SQLAction plan = adapter.getAction(template, node);
MockOperationObserver observer = new MockOperationObserver();
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
plan.performAction(c, observer);
@@ -126,34 +165,31 @@ public class SQLTemplateActionTest exten
c.close();
}
- List rows = observer.rowsForQuery(template);
+ List<DataRow> rows = observer.rowsForQuery(template);
assertNotNull(rows);
assertEquals(1, rows.size());
- Map row = (Map) rows.get(0);
+ DataRow row = rows.get(0);
assertNotNull(row.get("DOB"));
assertEquals(java.util.Date.class, row.get("DOB").getClass());
}
public void testSelectSQLDate() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
- // update data set to include dates....
- setDate(new java.util.Date(), 33006);
+ createFourArtists();
String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.sql.Date' 'DOB') "
+ "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- getSQLTemplateBuilder().updateSQLTemplate(template);
+ sqlTemplateCustomizer.updateSQLTemplate(template);
- Map bindings = new HashMap();
- bindings.put("id", new Integer(33006));
+ Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.put("id", 101);
template.setParameters(bindings);
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction plan = adapter.getAction(template, getNode());
+ SQLAction plan = adapter.getAction(template, node);
MockOperationObserver observer = new MockOperationObserver();
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
plan.performAction(c, observer);
@@ -162,34 +198,31 @@ public class SQLTemplateActionTest exten
c.close();
}
- List rows = observer.rowsForQuery(template);
+ List<DataRow> rows = observer.rowsForQuery(template);
assertNotNull(rows);
assertEquals(1, rows.size());
- Map row = (Map) rows.get(0);
+ DataRow row = rows.get(0);
assertNotNull(row.get("DOB"));
assertEquals(java.sql.Date.class, row.get("DOB").getClass());
}
public void testSelectSQLTimestamp() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
- // update data set to include dates....
- setDate(new java.util.Date(), 33006);
+ createFourArtists();
String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.sql.Timestamp' 'DOB') "
+ "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- getSQLTemplateBuilder().updateSQLTemplate(template);
+ sqlTemplateCustomizer.updateSQLTemplate(template);
- Map bindings = new HashMap();
- bindings.put("id", new Integer(33006));
+ Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.put("id", 201);
template.setParameters(bindings);
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction plan = adapter.getAction(template, getNode());
+ SQLAction plan = adapter.getAction(template, node);
MockOperationObserver observer = new MockOperationObserver();
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
plan.performAction(c, observer);
@@ -198,10 +231,10 @@ public class SQLTemplateActionTest exten
c.close();
}
- List rows = observer.rowsForQuery(template);
+ List<DataRow> rows = observer.rowsForQuery(template);
assertNotNull(rows);
assertEquals(1, rows.size());
- Map row = (Map) rows.get(0);
+ DataRow row = rows.get(0);
assertNotNull(row.get("DOB"));
// Sybase returns a Timestamp subclass... so can't test equality
@@ -213,16 +246,15 @@ public class SQLTemplateActionTest exten
+ "VALUES (#bind($id), #bind($name), #bind($dob 'DATE'))";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- Map bindings = new HashMap();
+ Map<String, Object> bindings = new HashMap<String, Object>();
bindings.put("id", new Long(1));
bindings.put("name", "a1");
bindings.put("dob", new Date(System.currentTimeMillis()));
template.setParameters(bindings);
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction action = adapter.getAction(template, getNode());
+ SQLAction action = adapter.getAction(template, node);
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
MockOperationObserver observer = new MockOperationObserver();
action.performAction(c, observer);
@@ -236,30 +268,21 @@ public class SQLTemplateActionTest exten
c.close();
}
- MockOperationObserver observer = new MockOperationObserver();
- SelectQuery query = new SelectQuery(Artist.class);
- getDomain().performQueries(Collections.singletonList(query), observer);
-
- List data = observer.rowsForQuery(query);
- assertEquals(1, data.size());
- Map row = (Map) data.get(0);
- assertEquals(bindings.get("id"), row.get("ARTIST_ID"));
- assertEquals(bindings.get("name"), row.get("ARTIST_NAME"));
- // to compare dates we need to create the binding correctly
- // assertEquals(bindings.get("dob"), row.get("DATE_OF_BIRTH"));
+ assertEquals(1, tArtist.getRowCount());
+ assertEquals(1l, tArtist.getLong("ARTIST_ID"));
+ assertEquals("a1", tArtist.getString("ARTIST_NAME").trim());
}
public void testExecuteUpdateNoParameters() throws Exception {
- getAccessStack().createTestData(DataContextCase.class, "testArtists", null);
+ createFourArtists();
SQLTemplate template = new SQLTemplate(
Object.class,
"delete from ARTIST where ARTIST_NAME like 'a%'");
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction action = adapter.getAction(template, getNode());
+ SQLAction action = adapter.getAction(template, node);
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
MockOperationObserver observer = new MockOperationObserver();
action.performAction(c, observer);
@@ -267,7 +290,7 @@ public class SQLTemplateActionTest exten
int[] batches = observer.countsForQuery(template);
assertNotNull(batches);
assertEquals(1, batches.length);
- assertEquals(DataContextCase.artistCount, batches[0]);
+ assertEquals(4, batches[0]);
}
finally {
c.close();
@@ -279,12 +302,12 @@ public class SQLTemplateActionTest exten
+ "VALUES (#bind($id), #bind($name), #bind($dob 'DATE'))";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- Map bindings1 = new HashMap();
+ Map<String, Object> bindings1 = new HashMap<String, Object>();
bindings1.put("id", new Long(1));
bindings1.put("name", "a1");
bindings1.put("dob", new Date(System.currentTimeMillis()));
- Map bindings2 = new HashMap();
+ Map<String, Object> bindings2 = new HashMap<String, Object>();
bindings2.put("id", new Long(33));
bindings2.put("name", "a$$$$$");
bindings2.put("dob", new Date(System.currentTimeMillis()));
@@ -292,15 +315,14 @@ public class SQLTemplateActionTest exten
bindings1, bindings2
});
- DbAdapter adapter = getAccessStackAdapter().getAdapter();
- SQLAction genericAction = adapter.getAction(template, getNode());
+ SQLAction genericAction = adapter.getAction(template, node);
assertTrue(genericAction instanceof SQLTemplateAction);
SQLTemplateAction action = (SQLTemplateAction) genericAction;
- assertSame(getAccessStackAdapter().getAdapter(), action.getAdapter());
+ assertSame(adapter, action.getAdapter());
assertSame(template, action.getQuery());
- Connection c = getConnection();
+ Connection c = dataSource.getConnection();
try {
MockOperationObserver observer = new MockOperationObserver();
action.performAction(c, observer);
@@ -318,17 +340,17 @@ public class SQLTemplateActionTest exten
MockOperationObserver observer = new MockOperationObserver();
SelectQuery query = new SelectQuery(Artist.class);
query.addOrdering("db:ARTIST_ID", SortOrder.ASCENDING);
- getDomain().performQueries(Collections.singletonList(query), observer);
+ node.performQueries(Collections.singletonList((Query) query), observer);
- List data = observer.rowsForQuery(query);
+ List<DataRow> data = observer.rowsForQuery(query);
assertEquals(2, data.size());
- Map row1 = (Map) data.get(0);
+ DataRow row1 = data.get(0);
assertEquals(bindings1.get("id"), row1.get("ARTIST_ID"));
assertEquals(bindings1.get("name"), row1.get("ARTIST_NAME"));
// to compare dates we need to create the binding correctly
// assertEquals(bindings1.get("dob"), row.get("DATE_OF_BIRTH"));
- Map row2 = (Map) data.get(1);
+ DataRow row2 = data.get(1);
assertEquals(bindings2.get("id"), row2.get("ARTIST_ID"));
assertEquals(bindings2.get("name"), row2.get("ARTIST_NAME"));
// to compare dates we need to create the binding correctly
@@ -337,26 +359,10 @@ public class SQLTemplateActionTest exten
public void testExtractTemplateString() throws Exception {
SQLTemplate template = new SQLTemplate(Artist.class, "A\nBC");
- SQLTemplateAction action = new SQLTemplateAction(
- template,
- getAccessStackAdapter().getAdapter(),
- getDomain().getEntityResolver());
+ SQLTemplateAction action = new SQLTemplateAction(template, adapter, objectContext
+ .getEntityResolver());
assertEquals("A BC", action.extractTemplateString());
}
- private void setDate(java.util.Date date, int artistId) {
- String templateString = "UPDATE ARTIST SET DATE_OF_BIRTH #bindEqual($date 'DATE') "
- + "WHERE ARTIST_ID = #bind($id)";
- SQLTemplate template = new SQLTemplate(Object.class, templateString);
-
- Map map = new HashMap();
- map.put("date", date);
- map.put("id", new Integer(artistId));
-
- template.setParameters(map);
- getNode().performQueries(
- Collections.singleton((Query) template),
- new QueryResult());
- }
}