/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.testing.tests.jpa.validation;
import javax.persistence.Query;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
public class QueryParameterValidationTestSuite extends JUnitTestCase {
public QueryParameterValidationTestSuite() {
}
public QueryParameterValidationTestSuite(String name) {
super(name);
}
public void setUp () {
super.setUp();
clearCache();
}
public void testParameterNameValidation(){
Query query = createEntityManager().createQuery("Select e from Employee e where e.lastName like :name ");
try{
query.setParameter("l", "%ay");
query.getResultList();
}catch (IllegalArgumentException ex){
assertTrue("Failed to throw expected IllegalArgumentException, when incorrect parameter name is used", ex.getMessage().contains("using a name"));
return;
}
fail("Failed to throw expected IllegalArgumentException, when incorrect parameter name is used");
}
public void testParameterPositionValidation(){
Query query = createEntityManager().createQuery("Select e from Employee e where e.firstName like ?1 ");
try{
query.setParameter(2, "%ay");
query.getResultList();
}catch (IllegalArgumentException ex){
assertTrue("Failed to throw expected IllegalArgumentException, when incorrect parameter name is used", ex.getMessage().contains("parameter at position"));
return;
}
fail("Failed to throw expected IllegalArgumentException, when incorrect parameter position is used");
}
public void testParameterPositionValidation2() {
Query query = createEntityManager().createQuery("Select e from Employee e where e.firstName = ?1 AND e.lastName = ?3 ");
try {
query.setParameter(1, "foo");
query.setParameter(2, "");
query.setParameter(3, "bar");
query.getResultList();
} catch (IllegalArgumentException ex) {
assertTrue("Failed to throw expected IllegalArgumentException, when incorrect parameter name is used", ex.getMessage().contains("parameter at position"));
return;
}
fail("Failed to throw expected IllegalArgumentException, when incorrect parameter position is used");
}
public static Test suite() {
TestSuite suite = new TestSuite(QueryParameterValidationTestSuite.class);
suite.setName("QueryParameterValidationTestSuite");
return suite;
}
}