blob: cabf2e912525254beafc8e17f82dd3bb44e90aea [file] [log] [blame]
/*
* Copyright (c) 2011, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation
//
package org.eclipse.persistence.jpa.tests.jpql.tools;
import org.eclipse.persistence.jpa.jpql.tools.DefaultRefactoringTool;
import org.eclipse.persistence.jpa.jpql.tools.RefactoringTool;
import org.eclipse.persistence.jpa.tests.jpql.UniqueSignature;
import org.junit.Test;
import static org.eclipse.persistence.jpa.tests.jpql.JPQLQueries2_0.*;
import static org.junit.Assert.*;
/**
* The abstract definition of a unit-test that tests {@link org.eclipse.persistence.jpa.jpql.tools.RefactoringTool
* RefactoringTool} when the JPA version is 2.0.
*
* @version 2.6
* @since 2.4
* @author Pascal Filion
*/
@UniqueSignature
@SuppressWarnings("nls")
public final class RefactoringToolTest2_0 extends AbstractRefactoringToolTest {
private RefactoringTool buildRefactoringTool(String jpqlQuery) throws Exception {
return new DefaultRefactoringTool(getPersistenceUnit(), getJPQLQueryBuilder(), jpqlQuery);
}
@Test
public final void test_RenameEntityName_1() throws Exception {
// SELECT TYPE(employee) FROM Employee employee WHERE TYPE(employee) <> Exempt
String jpqlQuery = query_007();
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameEntityName("Exempt", "Exemption");
String expected = "SELECT TYPE(employee) FROM Employee employee WHERE TYPE(employee) <> Exemption";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameEntityName_2() throws Exception {
// SELECT e.name,
// CASE TYPE(e) WHEN Exempt THEN 'Exempt'
// WHEN Contractor THEN 'Contractor'
// WHEN Intern THEN 'Intern'
// ELSE 'NonExempt'
// END
// FROM Employee e, Contractor c
// WHERE e.dept.name = 'Engineering'
String jpqlQuery = query_002();
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameEntityName("Exempt", "Exemption");
String expected = "SELECT e.name, CASE TYPE(e) WHEN Exemption THEN 'Exempt' WHEN Contractor THEN 'Contractor' WHEN Intern THEN 'Intern' ELSE 'NonExempt' END FROM Employee e, Contractor c WHERE e.dept.name = 'Engineering'";
assertEquals(expected, refactoringTool.toActualText());
refactoringTool.renameEntityName("Contractor", "Manager");
expected = "SELECT e.name, CASE TYPE(e) WHEN Exemption THEN 'Exempt' WHEN Manager THEN 'Contractor' WHEN Intern THEN 'Intern' ELSE 'NonExempt' END FROM Employee e, Manager c WHERE e.dept.name = 'Engineering'";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameEntityName_3() throws Exception {
// SELECT e.dept, e.empId, e.roomNumber, e.salary, UPPER(e.name) AS name_order FROM employee:Employee e WHERE e.name LIKE 'myArtifactWith%' ORDER BY name_order ASC
String jpqlQuery = query_017();
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameEntityName("employee:Employee", "employee_Employee_v1");
String expected = "SELECT e.dept, e.empId, e.roomNumber, e.salary, UPPER(e.name) AS name_order FROM employee_Employee_v1 e WHERE e.name LIKE 'myArtifactWith%' ORDER BY name_order ASC";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameEntityName_4() throws Exception {
// SELECT a.name, a.UUID, a.typeUUID AS assetTypeUUID, p.name AS projectName, ap.usageType FROM Asset a, UsedAssetUsingProject ap, Project p WHERE a.UUID = ap.usedAsset AND ap.usingProject = p.UUID
String jpqlQuery = query_018();
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameEntityName("Asset", "governance_Asset_v1");
refactoringTool.renameEntityName("UsedAssetUsingProject", "governance_UsedAssetUsingProject_v1");
refactoringTool.renameEntityName("Project", "governance_Project_v1");
String expected = "SELECT a.name, a.UUID, a.typeUUID AS assetTypeUUID, p.name AS projectName, ap.usageType FROM governance_Asset_v1 a, governance_UsedAssetUsingProject_v1 ap, governance_Project_v1 p WHERE a.UUID = ap.usedAsset AND ap.usingProject = p.UUID";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameResultVariable_1() throws Exception {
String jpqlQuery = "SELECT NEW java.util.Vector(a.employees) AS u FROM Address A";
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameResultVariable("u", "v");
String expected = "SELECT NEW java.util.Vector(a.employees) AS v FROM Address A";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameResultVariable_2() throws Exception {
String jpqlQuery = "SELECT e.name AS n FROM Employee e";
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameResultVariable("u", "v");
assertEquals(jpqlQuery, refactoringTool.toActualText());
}
@Test
public final void test_RenameResultVariable_3() throws Exception {
String jpqlQuery = "SELECT e.name AS n, 2 + 2 o FROM Address A";
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameResultVariable("o", "value");
String expected = "SELECT e.name AS n, 2 + 2 value FROM Address A";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameResultVariable_4() throws Exception {
String jpqlQuery = "SELECT e.name AS n, e.age a FROM Address A ORDER BY n";
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameResultVariable("n", "name");
String expected = "SELECT e.name AS name, e.age a FROM Address A ORDER BY name";
assertEquals(expected, refactoringTool.toActualText());
}
@Test
public final void test_RenameResultVariable_5() throws Exception {
String jpqlQuery = "SELECT e.name AS n, e.age a FROM Address A ORDER BY n, a";
RefactoringTool refactoringTool = buildRefactoringTool(jpqlQuery);
refactoringTool.renameResultVariable("n", "name");
refactoringTool.renameResultVariable("a", "age");
String expected = "SELECT e.name AS name, e.age age FROM Address A ORDER BY name, age";
assertEquals(expected, refactoringTool.toActualText());
}
}