/*******************************************************************************
* Copyright (c) 2012 VMWare, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMWare, Inc. - initial API and implementation
*******************************************************************************/
package org.grails.ide.eclipse.test.inferencing;
import junit.framework.Test;
/**
* @author Andrew Eisenberg
* @author Nieraj Singh
* @created Nov 28, 2011
*/
public class NamedQueryInferencingTests extends AbstractGrailsInferencingTests {
private static final String NAMED_QUERY_PROXY_SEARCH = "org.codehaus.groovy.grails.orm.hibernate.cfg.NamedCriteriaProxy<Search>";
private static final String SEARCH = "Search";
private static final String LIST_OF_SEARCH = "java.util.List<Search>";
public static Test suite() {
return buildTestSuite(NamedQueryInferencingTests.class);
}
public NamedQueryInferencingTests(String name) {
super(name);
}
public void testNamedQuery1() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
"}";
int start = contents.indexOf("firstQuery");
int end = start + "firstQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
start = contents.indexOf("secondQuery");
end = start + "secondQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
public void testNamedQuery2() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { firstQuery.secondQuery }\n" +
" }\n" +
"}";
int start = contents.lastIndexOf("firstQuery");
int end = start + "firstQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
start = contents.lastIndexOf("secondQuery");
end = start + "secondQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
public void testNamedQuery3() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { firstQuery.secondQuery }\n" +
"}";
int start = contents.lastIndexOf("firstQuery");
int end = start + "firstQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
start = contents.lastIndexOf("secondQuery");
end = start + "secondQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
public void testNamedQuery4() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.secondQuery }\n" +
"}";
int start = contents.lastIndexOf("firstQuery");
int end = start + "firstQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
start = contents.lastIndexOf("secondQuery");
end = start + "secondQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
public void testNamedQuery5() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.secondQuery.firstQuery.secondQuery.firstQuery.secondQuery.firstQuery.secondQuery }\n" +
"}";
int start = contents.lastIndexOf("firstQuery");
int end = start + "firstQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
start = contents.lastIndexOf("secondQuery");
end = start + "secondQuery".length();
assertTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
public void testNamedQueryWithFinder1() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.list }\n" +
"}";
int start = contents.lastIndexOf("list");
int end = start + "list".length();
// Commented out see http://jira.grails.org/browse/GRAILS-8387
// assertTypeInDomainClassNoPrefix(contents, start, end, LIST_OF_SEARCH);
assertTypeInDomainClassNoPrefix(contents, start, end, "java.lang.Object");
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
}
public void testNamedQueryWithFinder1a() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.count }\n" +
"}";
int start = contents.lastIndexOf("count");
int end = start + "count".length();
assertTypeInDomainClassNoPrefix(contents, start, end, "java.lang.Integer");
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
}
public void testNamedQueryWithFinder2() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.get }\n" +
"}";
int start = contents.lastIndexOf("get");
int end = start + "get".length();
assertTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
}
public void testNamedQueryWithFinder3() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.findWhere }\n" +
"}";
int start = contents.lastIndexOf("findWhere");
int end = start + "findWhere".length();
// Commented out see http://jira.grails.org/browse/GRAILS-8387
// assertTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
assertTypeInDomainClassNoPrefix(contents, start, end, "java.lang.Object");
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
}
public void testNamedQueryWithFinder4() throws Exception {
String contents =
"class Search {\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.findAllWhere }\n" +
"}";
int start = contents.lastIndexOf("findAllWhere");
int end = start + "findAllWhere".length();
// Commented out see http://jira.grails.org/browse/GRAILS-8387
// assertTypeInDomainClassNoPrefix(contents, start, end, LIST_OF_SEARCH);
assertTypeInDomainClassNoPrefix(contents, start, end, "java.lang.Object");
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, NAMED_QUERY_PROXY_SEARCH);
}
public void testNamedQueryWithFinder5() throws Exception {
String contents =
"class Search {\n" +
" String name\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.findByName }\n" +
"}";
int start = contents.lastIndexOf("findByName");
int end = start + "findByName".length();
assertTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
public void testNamedQueryWithFinder6() throws Exception {
String contents =
"class Search {\n" +
" String name\n" +
" static namedQueries = {\n" +
" firstQuery { }\n" +
" secondQuery { }\n" +
" }\n" +
" def x = { Search.firstQuery.findAllByNameBetween }\n" +
"}";
int start = contents.lastIndexOf("findAllByNameBetween");
int end = start + "findAllByNameBetween".length();
assertTypeInDomainClassNoPrefix(contents, start, end, LIST_OF_SEARCH);
assertDeclarationTypeInDomainClassNoPrefix(contents, start, end, SEARCH);
}
}