Author: evgeny
Date: Thu Dec 10 11:01:03 2009
New Revision: 889183
URL: http://svn.apache.org/viewvc?rev=889183&view=rev
Log:
CAY-1306 Add only JUnit tests from this issue that is fixing bug in 2.0 branch
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java?rev=889183&r1=889182&r2=889183&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/jdbc/BindDirectiveTest.java
Thu Dec 10 11:01:03 2009
@@ -21,10 +21,13 @@
import java.sql.Connection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.art.Artist;
+import org.apache.cayenne.DataRow;
import org.apache.cayenne.access.MockOperationObserver;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.query.SelectQuery;
@@ -41,6 +44,27 @@
deleteTestData();
}
+ public void testBindingForCollection() throws Exception {
+ // insert 3 artists
+ Map parameters;
+ for (int i = 1; i < 4; i++) {
+ parameters = new HashMap();
+ parameters.put("id", new Long(i));
+ parameters.put("name", "Artist" + i);
+ performInsertForParameters(parameters, true, i);
+ }
+
+ // now select only with names: Artist1 and Artist3
+ Set<String> artistNames = new HashSet<String>();
+ artistNames.add("Artist1");
+ artistNames.add("Artist3");
+ String sql = "SELECT * FROM ARTIST WHERE ARTIST_NAME in
(#bind($ARTISTNAMES))";
+ SQLTemplate query = new SQLTemplate(Artist.class, sql);
+ query.setParameters(Collections.singletonMap("ARTISTNAMES",
artistNames));
+ List<DataRow> result =
getDomain().createDataContext().performQuery(query);
+ assertEquals(2, result.size());
+ }
+
public void testBindForPassedNullParam() throws Exception {
Map parameters = new HashMap();
parameters.put("id", new Long(1));
@@ -49,7 +73,7 @@
parameters.put("dob", null);
// without JDBC usage
- Map row = performInsertForParameters(parameters, false);
+ Map row = performInsertForParameters(parameters, false, 1);
assertEquals(parameters.get("id"), row.get("ARTIST_ID"));
assertEquals(parameters.get("name"), row.get("ARTIST_NAME"));
assertEquals(parameters.get("dob"), row.get("DATE_OF_BIRTH"));
@@ -64,7 +88,7 @@
parameters.put("dob", null);
// use JDBC
- Map row = performInsertForParameters(parameters, true);
+ Map row = performInsertForParameters(parameters, true, 1);
assertEquals(parameters.get("id"), row.get("ARTIST_ID"));
assertEquals(parameters.get("name"), row.get("ARTIST_NAME"));
assertEquals(parameters.get("dob"), row.get("DATE_OF_BIRTH"));
@@ -78,7 +102,7 @@
// not passing parameter parameters.put("dob", not passed!);
// without JDBC usage
- Map row = performInsertForParameters(parameters, false);
+ Map row = performInsertForParameters(parameters, false, 1);
assertEquals(parameters.get("id"), row.get("ARTIST_ID"));
assertEquals(parameters.get("name"), row.get("ARTIST_NAME"));
// parameter should be passed as null
@@ -92,7 +116,7 @@
// not passing parameter parameters.put("dob", not passed!);
// use JDBC
- Map row = performInsertForParameters(parameters, true);
+ Map row = performInsertForParameters(parameters, true, 1);
assertEquals(parameters.get("id"), row.get("ARTIST_ID"));
assertEquals(parameters.get("name"), row.get("ARTIST_NAME"));
// parameter should be passed as null
@@ -104,8 +128,10 @@
*
* @return inserted row
*/
- private Map performInsertForParameters(Map parameters, boolean useJDBCType)
- throws Exception {
+ private Map performInsertForParameters(
+ Map parameters,
+ boolean useJDBCType,
+ int expectedRowCount) throws Exception {
String templateString;
if (useJDBCType) {
templateString = "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME,
DATE_OF_BIRTH) "
@@ -121,7 +147,8 @@
SQLTemplateAction action = new SQLTemplateAction(
template,
- getAccessStackAdapter().getAdapter(),
getDomain().getEntityResolver());
+ getAccessStackAdapter().getAdapter(),
+ getDomain().getEntityResolver());
assertSame(getAccessStackAdapter().getAdapter(), action.getAdapter());
Connection c = getConnection();
@@ -143,7 +170,7 @@
getDomain().performQueries(Collections.singletonList(query), observer);
List data = observer.rowsForQuery(query);
- assertEquals(1, data.size());
+ assertEquals(expectedRowCount, data.size());
Map row = (Map) data.get(0);
return row;
}