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 2011/05/14 12:50:11 UTC
svn commit: r1103027 -
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
Author: aadamchik
Date: Sat May 14 10:50:11 2011
New Revision: 1103027
URL: http://svn.apache.org/viewvc?rev=1103027&view=rev
Log:
CAY-1564 CayenneCase unit tests conversion(4)
patch by Dzmitry Kazimirchyk - EJBQLQueryTest
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java?rev=1103027&r1=1103026&r2=1103027&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java Sat May 14 10:50:11 2011
@@ -24,18 +24,67 @@ import java.util.List;
import java.util.Map;
import org.apache.cayenne.DataRow;
-import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.Inject;
import org.apache.cayenne.ejbql.EJBQLCompiledExpression;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.map.EntityResolver;
+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.CayenneCase;
+import org.apache.cayenne.unit.di.DataChannelInterceptor;
+import org.apache.cayenne.unit.di.UnitTestClosure;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.apache.cayenne.util.XMLEncoder;
-public class EJBQLQueryTest extends CayenneCase {
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class EJBQLQueryTest extends ServerCase {
+
+ @Inject
+ private DataContext context;
+
+ @Inject
+ private ServerRuntime runtime;
+
+ @Inject
+ protected DataChannelInterceptor queryInterceptor;
+
+ @Inject
+ private DBHelper dbHelper;
+
+ private TableHelper tArtist;
+ private TableHelper tPainting;
+
+ @Override
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("PAINTING");
+ dbHelper.deleteAll("ARTIST");
+
+ tArtist = new TableHelper(dbHelper, "ARTIST");
+ tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+
+ tPainting = new TableHelper(dbHelper, "PAINTING");
+ tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE");
+ }
+
+ protected void createArtistsDataSet() throws Exception {
+ tArtist.insert(33001, "a0");
+ tArtist.insert(33002, "a1");
+ tArtist.insert(33003, "a2");
+ tArtist.insert(33004, "a3");
+ tArtist.insert(33005, "a4");
+ }
+
+ protected void createPaintingsDataSet() throws Exception {
+ tArtist.insert(33001, "a0");
+ tArtist.insert(33002, "a1");
+ tPainting.insert(33001, 33001, "title0");
+ tPainting.insert(33002, 33002, "title1");
+ }
public void testParameters() {
String ejbql = "select a FROM Artist a WHERE a.artistName = ?1 OR a.artistName = :name";
@@ -43,8 +92,8 @@ public class EJBQLQueryTest extends Caye
query.setParameter(1, "X");
query.setParameter("name", "Y");
- Map parameters = query.getNamedParameters();
- Map parameters1 = query.getPositionalParameters();
+ Map<String, Object> parameters = query.getNamedParameters();
+ Map<Integer, Object> parameters1 = query.getPositionalParameters();
assertEquals(1, parameters.size());
assertEquals(1, parameters1.size());
assertEquals("X", parameters1.get(new Integer(1)));
@@ -64,7 +113,7 @@ public class EJBQLQueryTest extends Caye
q2.setParameter("name", "Y");
q2.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
- EntityResolver resolver = getDomain().getEntityResolver();
+ EntityResolver resolver = runtime.getDataDomain().getEntityResolver();
assertEquals(q1.getMetaData(resolver).getCacheKey(), q2
.getMetaData(resolver)
@@ -72,73 +121,53 @@ public class EJBQLQueryTest extends Caye
}
public void testCacheStrategy() throws Exception {
- deleteTestData();
- insertValue();
- DataContext contex = createDataContext();
- String ejbql = "select a FROM Artist a";
+ // insertValue();
+ createArtistsDataSet();
+
+ final String ejbql = "select a FROM Artist a";
EJBQLQuery query = new EJBQLQuery(ejbql);
query.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
- List<Artist> artist1 = contex.performQuery(query);
- blockQueries();
- List<Artist> artist2;
- try {
- EJBQLQuery query1 = new EJBQLQuery(ejbql);
- query1.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
- artist2 = contex.performQuery(query1);
- }
- finally {
- unblockQueries();
- }
+ final List<Artist> artist1 = context.performQuery(query);
+
+ queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+
+ public void execute() {
+ List<Artist> artist2;
+ EJBQLQuery query1 = new EJBQLQuery(ejbql);
+ query1.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
+ artist2 = context.performQuery(query1);
+
+ assertEquals(artist1.get(0).getArtistName(), artist2
+ .get(0)
+ .getArtistName());
+ }
+ });
- assertEquals(artist1.get(0).getArtistName(), artist2.get(0).getArtistName());
}
public void testDataRows() throws Exception {
- deleteTestData();
- insertValue();
+ // insertValue();
+ createArtistsDataSet();
+
String ejbql = "select a FROM Artist a";
EJBQLQuery query = new EJBQLQuery(ejbql);
query.setFetchingDataRows(true);
- List artists = createDataContext().performQuery(query);
+ List<?> artists = context.performQuery(query);
- Map row = (Map) artists.get(0);
+ DataRow row = (DataRow) artists.get(0);
String artistName = (String) row.get("ARTIST_NAME");
- assertTrue(row instanceof DataRow);
-
- Artist artist = (Artist) createDataContext().objectFromDataRow("Artist", (DataRow) row);
+ Artist artist = (Artist) context.objectFromDataRow("Artist", row);
assertEquals(artistName, artist.getArtistName());
}
- private void insertValue() {
- DataContext context = createDataContext();
-
- for (int i = 0; i < 5; i++) {
- Artist obj = context.newObject(Artist.class);
- obj.setArtistName("a" + i);
- context.commitChanges();
- }
- }
-
- private void insertPaintValue() {
- DataContext context = createDataContext();
-
- for (int i = 0; i < 2; i++) {
- Artist art = context.newObject(Artist.class);
- art.setArtistName("a" + i);
- Painting obj = context.newObject(Painting.class);
- obj.setToArtist(art);
- obj.setPaintingTitle("title" + i);
- context.commitChanges();
- }
- }
-
public void testGetExpression() {
String ejbql = "select a FROM Artist a";
EJBQLQuery query = new EJBQLQuery(ejbql);
- EJBQLCompiledExpression parsed = query.getExpression(getDomain()
+ EJBQLCompiledExpression parsed = query.getExpression(runtime
+ .getDataDomain()
.getEntityResolver());
assertNotNull(parsed);
assertEquals(ejbql, parsed.getSource());
@@ -155,7 +184,7 @@ public class EJBQLQueryTest extends Caye
public void testUniqueKeyEntity() {
// insertValue();
- EntityResolver resolver = getDomain().getEntityResolver();
+ EntityResolver resolver = runtime.getDataDomain().getEntityResolver();
String ejbql = "select a FROM Artist a";
EJBQLQuery q1 = new EJBQLQuery(ejbql);
@@ -171,7 +200,7 @@ public class EJBQLQueryTest extends Caye
public void testGetMetadata() {
- EntityResolver resolver = getDomain().getEntityResolver();
+ EntityResolver resolver = runtime.getDataDomain().getEntityResolver();
String ejbql = "select a FROM Artist a";
EJBQLQuery query = new EJBQLQuery(ejbql);
QueryMetadata md = query.getMetaData(resolver);
@@ -189,45 +218,44 @@ public class EJBQLQueryTest extends Caye
assertEquals(QueryCacheStrategy.NO_CACHE, md.getCacheStrategy());
}
- public void testSelectRelationship() {
+ public void testSelectRelationship() throws Exception {
- insertPaintValue();
- DataContext contex = createDataContext();
+ // insertPaintValue();
+ createPaintingsDataSet();
String ejbql = "SELECT p.toArtist FROM Painting p";
EJBQLQuery query = new EJBQLQuery(ejbql);
- List result = contex.performQuery(query);
+ List<?> result = context.performQuery(query);
assertNotNull(result);
assertEquals(2, result.size());
assertEquals(Artist.class, result.get(0).getClass());
-
String ejbql2 = "SELECT p.toArtist, p FROM Painting p";
EJBQLQuery query2 = new EJBQLQuery(ejbql2);
- List result2 = contex.performQuery(query2);
+ List<?> result2 = context.performQuery(query2);
assertNotNull(result2);
assertEquals(2, result2.size());
- assertEquals(2, ((Object[])result2.get(0)).length);
+ assertEquals(2, ((Object[]) result2.get(0)).length);
- assertEquals(Artist.class,((Object[])result2.get(0))[0].getClass());
- assertEquals(Painting.class,((Object[])result2.get(0))[1].getClass());
+ assertEquals(Artist.class, ((Object[]) result2.get(0))[0].getClass());
+ assertEquals(Painting.class, ((Object[]) result2.get(0))[1].getClass());
String ejbql3 = "SELECT p.toArtist, p.paintingTitle FROM Painting p";
EJBQLQuery query3 = new EJBQLQuery(ejbql3);
- List result3 = contex.performQuery(query3);
+ List<?> result3 = context.performQuery(query3);
assertNotNull(result3);
assertEquals(2, result3.size());
- assertEquals(2, ((Object[])result3.get(0)).length);
+ assertEquals(2, ((Object[]) result3.get(0)).length);
- assertEquals(Artist.class,((Object[])result3.get(0))[0].getClass());
- assertEquals(String.class,((Object[])result3.get(0))[1].getClass());
+ assertEquals(Artist.class, ((Object[]) result3.get(0))[0].getClass());
+ assertEquals(String.class, ((Object[]) result3.get(0))[1].getClass());
}
public void testEncodeAsXML() {
@@ -266,64 +294,56 @@ public class EJBQLQueryTest extends Caye
public void testNullParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist=:x");
query.setParameter("x", null);
- createDataContext().performQuery(query);
+ context.performQuery(query);
}
public void testNullNotEqualsParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist<>:x");
query.setParameter("x", null);
- createDataContext().performQuery(query);
+ context.performQuery(query);
}
public void testNullPositionalParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist=?1");
query.setParameter(1, null);
- createDataContext().performQuery(query);
+ context.performQuery(query);
}
public void testNullAndNotNullParameter() {
- EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist=:x OR p.toArtist.artistName=:b");
+ EJBQLQuery query = new EJBQLQuery(
+ "select p from Painting p WHERE p.toArtist=:x OR p.toArtist.artistName=:b");
query.setParameter("x", null);
query.setParameter("b", "Y");
- createDataContext().performQuery(query);
+ context.performQuery(query);
}
public void testJoinToJoined() {
- ObjectContext context = createDataContext();
-
EJBQLQuery query = new EJBQLQuery(
- "select g from Gallery g inner join g.paintingArray p where p.toArtist.artistName like '%a%'");
+ "select g from Gallery g inner join g.paintingArray p where p.toArtist.artistName like '%a%'");
context.performQuery(query);
}
-
-
public void testJoinAndCount() {
- ObjectContext context = createDataContext();
-
EJBQLQuery query = new EJBQLQuery(
- "select count(p) from Painting p where p.toGallery.galleryName LIKE '%a%' AND (" +
- "p.paintingTitle like '%a%' or " +
- "p.toArtist.artistName like '%a%'" +
- ")");
+ "select count(p) from Painting p where p.toGallery.galleryName LIKE '%a%' AND ("
+ + "p.paintingTitle like '%a%' or "
+ + "p.toArtist.artistName like '%a%'"
+ + ")");
context.performQuery(query);
}
-// SELECT COUNT(p) from Product p where p.vsCatalog.id = 1 and
-// (
-// p.displayName like '%rimadyl%'
-// or p.manufacturer.name like '%rimadyl%'
-// or p.description like '%rimadyl%'
-// or p.longdescription like '%rimadyl%'
-// or p.longdescription2 like '%rimadyl%'
-// or p.manufacturerPartNumber like '%rimadyl%'
-// or p.partNumber like '%rimadyl%'
-// )
+ // SELECT COUNT(p) from Product p where p.vsCatalog.id = 1 and
+ // (
+ // p.displayName like '%rimadyl%'
+ // or p.manufacturer.name like '%rimadyl%'
+ // or p.description like '%rimadyl%'
+ // or p.longdescription like '%rimadyl%'
+ // or p.longdescription2 like '%rimadyl%'
+ // or p.manufacturerPartNumber like '%rimadyl%'
+ // or p.partNumber like '%rimadyl%'
+ // )
public void testRelationshipWhereClause() throws Exception {
- deleteTestData();
- ObjectContext context = createDataContext();
-
Artist a = context.newObject(Artist.class);
a.setArtistName("a");
Painting p = context.newObject(Painting.class);
@@ -331,8 +351,7 @@ public class EJBQLQueryTest extends Caye
p.setToArtist(a);
context.commitChanges();
- EJBQLQuery query = new EJBQLQuery(
- "select p from Painting p where p.toArtist=:a");
+ EJBQLQuery query = new EJBQLQuery("select p from Painting p where p.toArtist=:a");
query.setParameter("a", a);
List<Painting> paintings = context.performQuery(query);
@@ -341,46 +360,43 @@ public class EJBQLQueryTest extends Caye
}
public void testRelationshipWhereClause2() throws Exception {
- ObjectContext context = createDataContext();
-
Expression exp = ExpressionFactory.matchExp(Painting.TO_GALLERY_PROPERTY, null);
- EJBQLQuery query = new EJBQLQuery("select p.toArtist from Painting p where " + exp.toEJBQL("p"));
+ EJBQLQuery query = new EJBQLQuery("select p.toArtist from Painting p where "
+ + exp.toEJBQL("p"));
context.performQuery(query);
}
public void testOrBrackets() throws Exception {
- deleteTestData();
- ObjectContext context = createDataContext();
-
Artist a = context.newObject(Artist.class);
a.setArtistName("testOrBrackets");
context.commitChanges();
- //this query is equivalent to (false and (false or true)) and
- //should always return 0 rows
- EJBQLQuery query = new EJBQLQuery("select a from Artist a " +
- "where a.artistName <> a.artistName and " +
- "(a.artistName <> a.artistName or a.artistName = a.artistName)");
+ // this query is equivalent to (false and (false or true)) and
+ // should always return 0 rows
+ EJBQLQuery query = new EJBQLQuery("select a from Artist a "
+ + "where a.artistName <> a.artistName and "
+ + "(a.artistName <> a.artistName or a.artistName = a.artistName)");
assertEquals(context.performQuery(query).size(), 0);
- //on the other hand, the following is equivalent to (false and false) or true) and
- //should return >0 rows
- query = new EJBQLQuery("select a from Artist a " +
- "where a.artistName <> a.artistName and " +
- "a.artistName <> a.artistName or a.artistName = a.artistName");
+ // on the other hand, the following is equivalent to (false and false) or true)
+ // and
+ // should return >0 rows
+ query = new EJBQLQuery("select a from Artist a "
+ + "where a.artistName <> a.artistName and "
+ + "a.artistName <> a.artistName or a.artistName = a.artistName");
assertTrue(context.performQuery(query).size() > 0);
- //checking brackets around not
- query = new EJBQLQuery("select a from Artist a " +
- "where not(a.artistName <> a.artistName and " +
- "a.artistName <> a.artistName or a.artistName = a.artistName)");
+ // checking brackets around not
+ query = new EJBQLQuery("select a from Artist a "
+ + "where not(a.artistName <> a.artistName and "
+ + "a.artistName <> a.artistName or a.artistName = a.artistName)");
assertEquals(context.performQuery(query).size(), 0);
- //not is first to process
- query = new EJBQLQuery("select a from Artist a " +
- "where not a.artistName <> a.artistName or " +
- "a.artistName = a.artistName");
+ // not is first to process
+ query = new EJBQLQuery("select a from Artist a "
+ + "where not a.artistName <> a.artistName or "
+ + "a.artistName = a.artistName");
assertTrue(context.performQuery(query).size() > 0);
}
}