| /* |
| * 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()); |
| } |
| } |