package com.javaeye.jert.domain.query.test;
import junit.framework.TestCase;
import com.javaeye.jert.domain.ParameterDefinition;
import com.javaeye.jert.domain.query.QueryParameter;
import com.javaeye.jert.domain.query.impl.DynamicParameterQuery;
/**
* @author Quake Wang
* @since 2005-1-4
* @version $Revision: 1.1 $
*/
public class DynamicParameterQueryTest extends TestCase {
private static final String conditionalSql = "<plain>select * from user_impl where 1 = 1</plain>"
+ "<dynamic type=\"isNotNull\" append-before=\"and age > \" parameter-name=\"age1\"/>"
+ "<dynamic type=\"isNotEmpty\" append-before=\"and age < \" parameter-name=\"age2\"/>";
public void testConditionalPart() {
DynamicParameterQuery query = new DynamicParameterQuery(conditionalSql);
assertEquals("age1", query.getParameterNames().get(0));
assertEquals("age2", query.getParameterNames().get(1));
assertEquals("select * from user_impl where 1 = 1", query.getSql(null));
QueryParameter p1 = new QueryParameter(new ParameterDefinition("age1"));
QueryParameter p2 = new QueryParameter(new ParameterDefinition("age2"));
p1.setValue("30");
p2.setValue("");
assertEquals("select * from user_impl where 1 = 1 and age > ?", query.getSql(new QueryParameter[] { p1, p2 }));
p2.setValue("50");
assertEquals("select * from user_impl where 1 = 1 and age > ? and age < ?", query.getSql(new QueryParameter[] { p1, p2 }));
}
}