/**
* Copyright 2008-2016 Qualogy Solutions B.V.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package test.com.qualogy.qafe.business.integration.rdb.update;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.junit.Ignore;
import com.qualogy.qafe.business.test.BusinessActionTestCase;
import com.qualogy.qafe.core.datastore.DataStore;
@Ignore
@SuppressWarnings("deprecation")
public class RDBServiceProcessorUpdateTest extends BusinessActionTestCase {
@Override
public String getAppContextDir() {
return getDirBasedUponPackage();
}
@Override
protected String[] getSetupActions() {
return new String[]{"deleteData", "insertData"};
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testSimpleUpdate() throws Exception {
DataStore.store(dataId, "nameRefVar", "Sam");
manage("testUpdateWithoutPK");
manage("testSelectToVerify");
assertEquals("Sam", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testUpdateWithPK() throws Exception {
DataStore.store(dataId, "nameRefVar", "Michelle");
DataStore.store(dataId, "idRefVar", new Integer(1));
manage("testUpdateWithPK");
manage("testSelectToVerify");
assertEquals("Michelle", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testUpdateMultipleFieldsWithoutPK() throws Exception {
DataStore.store(dataId, "nameRefVar", "Ethan");
DataStore.store(dataId, "addressRefVar", "Amsterdam");
DataStore.store(dataId, "salaryRefVar", 0);
DataStore.store(dataId, "dateRefVar", new Date("01/14/2011"));
manage("testUpdateMultipleFieldsWithoutPK");
manage("testSelectToVerify");
assertEquals("Ethan", DataStore.getValue(dataId, "result[0].NAME"));
assertEquals("Amsterdam", DataStore.getValue(dataId, "result[0].ADDRESS"));
assertTrue(DataStore.getValue(dataId, "result[0].ENTRY_DATE") instanceof Timestamp); // Verifying Object type.
assertEquals("2011-01-14 00:00:00.0", DataStore.getValue(dataId, "result[0].ENTRY_DATE").toString()); // Verifying data value.
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testUpdateMultipleFieldsWithPK() throws Exception {
DataStore.store(dataId, "idRefVar", 1);
DataStore.store(dataId, "nameRefVar", "Ford");
DataStore.store(dataId, "addressRefVar", "Den Haag");
DataStore.store(dataId, "salaryRefVar", 4444);
manage("testUpdateMultipleFieldsWithPK");
manage("testSelectToVerify");
assertEquals("Ford", DataStore.getValue(dataId, "result[0].NAME"));
assertEquals("Den Haag", DataStore.getValue(dataId, "result[0].ADDRESS"));
assertTrue(DataStore.getValue(dataId, "result[0].SALARY") instanceof BigDecimal);
assertEquals(4444, Integer.parseInt(DataStore.getValue(dataId, "result[0].SALARY").toString()));
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testDateUpdateWithPK() throws Exception {
DataStore.store(dataId, "idRefVar", 1);
DataStore.store(dataId, "dateRefVar", new Date("02/27/2011"));
manage("testDateUpdateWithPK");
manage("testSelectToVerify");
assertTrue(DataStore.getValue(dataId, "result[0].ENTRY_DATE") instanceof Timestamp); // Verifying Object type.
assertEquals("2011-02-27 00:00:00.0", DataStore.getValue(dataId, "result[0].ENTRY_DATE").toString()); // Verifying data value.
}
/* Testing with -> <update id="updateWithSqlAttribute" sql="update QAFE_TEST_UPDATE set NAME='Bob' where ID=1"/> */
public void testUpdateWithSQLAttribute() throws Exception{
manage("testUpdateWithSQLAttribute");
manage("testSelectToVerify");
assertEquals("Bob", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="updateWithSqlAttributeAndInParams" sql="update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar, ENTRY_DATE=:dateVar where ID = :idVar"/> */
public void testUpdateWithSqlAttributeAndInParams() throws Exception {
DataStore.store(dataId, "idRefVar", 1);
DataStore.store(dataId, "nameRefVar", "Eva");
DataStore.store(dataId, "salaryRefVar", 5000);
DataStore.store(dataId, "dateRefVar", new Date("03/08/2011"));
manage("testUpdateWithSqlAttributeAndInParams");
manage("testSelectToVerify");
assertEquals("Eva", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="updateWithSqlAttributeAndInParams" sql="update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar, ENTRY_DATE=:dateVar where ID = :idVar"/> */
public void testUpdateWithSqlAttributeAndInParamsAsMap() throws Exception {
HashMap<String, Object> mapRefVar = new HashMap<String, Object>();
// Key should be same as that of the reference variable used in the SQL statement.
mapRefVar.put("idVar", new Integer(1));
mapRefVar.put("nameVar", "Amy");
mapRefVar.put("salaryVar", 8888);
mapRefVar.put("dateVar", new Date("02/15/2011"));
DataStore.store(dataId, "mapRefVar", mapRefVar);
manage("testUpdateWithSqlAttributeAndInParamsAsMap");
manage("testSelectToVerify");
assertEquals("Amy", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testUpdateTagWithInParamsAsMap() throws Exception {
HashMap<String, Object> mapRefVar = new HashMap<String, Object>();
// Key should be same as that of the column name. case INSENSITIVE
mapRefVar.put("id", new Integer(1));
mapRefVar.put("name", "James Bond");
mapRefVar.put("ADDRESS", "London");
mapRefVar.put("salary", 007);
mapRefVar.put("ENTRY_DATE", new Date("03/25/2011"));
DataStore.store(dataId, "mapRefVar", mapRefVar);
manage("testUpdateTagWithInParamsAsMap");
manage("testSelectToVerify");
assertEquals("James Bond", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="updateWithSqlAttributeAndInParams" sql="update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar, ENTRY_DATE=:dateVar where ID=:idVar"/> */
public void testUpdateWithSqlAttributeAndInParamsAsCollection() throws Exception {
List<HashMap<String, Object>> listRefVar = new ArrayList<HashMap<String, Object>>();
// Keys of the Map should be same as that of the reference variable used in the SQL statement.
HashMap<String, Object> hm1 = new HashMap<String, Object>();
hm1.put("idVar", new Integer(1));
hm1.put("nameVar", "Jack Sparrow");
hm1.put("addressVar", "Black Pearl"); // addressVar not mapped in SQL statement and hence won't be updated
hm1.put("salaryVar", 6666);
hm1.put("dateVar", new Date("04/30/2011"));
HashMap<String, Object> hm2 = new HashMap<String, Object>();
hm2.put("idVar", new Integer(2));
hm2.put("nameVar", "Peter Pan");
hm2.put("salaryVar", 5432);
hm2.put("dateVar", new Date("05/18/2010"));
listRefVar.add(hm1);
listRefVar.add(hm2);
DataStore.store(dataId, "listRefVar", listRefVar);
manage("testUpdateWithSqlAttributeAndInParamsAsCollection");
manage("testSelectAllToVerify");
assertEquals("Jack Sparrow", DataStore.getValue(dataId, "result[0].NAME"));
assertEquals("Peter Pan", DataStore.getValue(dataId, "result[1].NAME"));
}
/* Testing with -> <update id="useUpdateTagWithTableName" table="QAFE_TEST_UPDATE"/> */
public void testUpdateTagWithInParamsAsCollection() throws Exception {
List<HashMap<String, Object>> listRefVar = new ArrayList<HashMap<String, Object>>();
// Keys of the Map should be same as that of the column name. case INSENSITIVE
HashMap<String, Object> hm1 = new HashMap<String, Object>();
hm1.put("ID", new Integer(1));
hm1.put("name", "Neo");
hm1.put("address", "Nebuchadnezzar"); // addressVar not mapped in SQL statement and hence won't be updated
hm1.put("SALARY", 6666);
hm1.put("entry_date", new Date("04/30/2011"));
HashMap<String, Object> hm2 = new HashMap<String, Object>();
hm2.put("id", new Integer(2));
hm2.put("NAME", "Agent Smith");
hm2.put("SALARY", 5432);
hm2.put("ENTRY_DATE", new Date("05/18/2010"));
listRefVar.add(hm1);
listRefVar.add(hm2);
DataStore.store(dataId, "listRefVar", listRefVar);
manage("testUpdateTagWithInParamsAsCollection");
manage("testSelectAllToVerify");
assertEquals("Neo", DataStore.getValue(dataId, "result[0].NAME"));
assertEquals("Agent Smith", DataStore.getValue(dataId, "result[1].NAME"));
}
/* Testing with -> <update id="updateWithSqlAsText">update QAFE_TEST_UPDATE set NAME='Amanda', SALARY=8000 where ID=1</update> */
public void testUpdateWithSqlAsText() throws Exception {
manage("testUpdateWithSqlAsText");
manage("testSelectToVerify");
assertEquals("Amanda", DataStore.getValue(dataId, "result[0].NAME"));
assertEquals(8000, Integer.parseInt(DataStore.getValue(dataId, "result[0].SALARY").toString()));
}
/* Testing with -> <update id="updateWithSqlAsTextAndInParams">update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar where ID=:idVar</update> */
public void testUpdateWithSqlAsTextAndInParams() throws Exception {
DataStore.store(dataId, "idRefVar", 1);
DataStore.store(dataId, "nameRefVar", "Trinity");
DataStore.store(dataId, "salaryRefVar", 0);
manage("testUpdateWithSqlAsTextAndInParams");
manage("testSelectToVerify");
assertEquals("Trinity", DataStore.getValue(dataId, "result[0].NAME"));
assertEquals(0, Integer.parseInt(DataStore.getValue(dataId, "result[0].SALARY").toString()));
}
/* Testing with -> <update id="updateWithSqlAsTextAndInParams">update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar where ID=:idVar</update> */
public void testUpdateWithSqlAsTextAndInParamsAsMap() throws Exception {
HashMap<String, Object> mapRefVar = new HashMap<String, Object>();
// Key should be same as that of the variable name used in the SQL statment.
mapRefVar.put("idVar", new Integer(1));
mapRefVar.put("nameVar", "Al Bundy");
mapRefVar.put("salaryVar", 10000);
DataStore.store(dataId, "mapRefVar", mapRefVar);
manage("testUpdateWithSqlAsTextAndInParamsAsMap");
manage("testSelectToVerify");
assertEquals("Al Bundy", DataStore.getValue(dataId, "result[0].NAME"));
}
/* Testing with -> <update id="updateWithSqlAsTextAndInParams">update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar where ID=:idVar</update> */
public void testUpdateWithSqlAsTextAndInParamsAsCollection() throws Exception {
List<HashMap<String, Object>> listRefVar = new ArrayList<HashMap<String, Object>>();
// Keys of the Map should be same as that of the reference variable used in the SQL statement.
HashMap<String, Object> hm1 = new HashMap<String, Object>();
hm1.put("idVar", new Integer(3));
hm1.put("nameVar", "Shrek");
hm1.put("salaryVar", 7777);
hm1.put("dateVar", new Date("04/30/2011"));
HashMap<String, Object> hm2 = new HashMap<String, Object>();
hm2.put("idVar", new Integer(4));
hm2.put("nameVar", "Pheona");
hm2.put("salaryVar", 2222);
hm2.put("dateVar", new Date("05/18/2010"));
listRefVar.add(hm1);
listRefVar.add(hm2);
DataStore.store(dataId, "listRefVar", listRefVar);
manage("testUpdateWithSqlAsTextAndInParamsAsCollection");
manage("testSelectAllToVerify");
assertEquals("Shrek", DataStore.getValue(dataId, "result[2].NAME"));
assertEquals("Pheona", DataStore.getValue(dataId, "result[3].NAME"));
}
/* Testing with - > <update id="updateWithAllAttributes" table="IGNORED" sql="update QAFE_TEST_UPDATE set ADDRESS=:addressVar where ID=:idVar" where="IGNORED"/> */
public void testUpdateWithAllAttributes() throws Exception {
DataStore.store(dataId, "idRefVar", new Integer(3));
DataStore.store(dataId, "addressRefVar", "Melbourne");
manage("testUpdateWithAllAttributes");
manage("testSelectAllToVerify");
assertEquals("Melbourne", DataStore.getValue(dataId, "result[2].ADDRESS"));
}
/* Testing with - > <update id="updateWithAllAttributes" table="IGNORED" sql="update QAFE_TEST_UPDATE set ADDRESS=:addressVar where ID=:idVar" where="IGNORED"/> */
public void testUpdateWithAllAttributesAndInParamsAsMap() throws Exception {
HashMap<String, Object> mapRefVar = new HashMap<String, Object>();
mapRefVar.put("idVar", new Integer(1));
mapRefVar.put("addressVar", "Middle Earth");
DataStore.store(dataId, "mapRefVar", mapRefVar);
manage("testUpdateWithAllAttributesAndInParamsAsMap");
manage("testSelectToVerify");
assertEquals("Middle Earth", DataStore.getValue(dataId, "result[0].ADDRESS"));
}
/* Testing with - > <update id="updateWithAllAttributes" table="IGNORED" sql="update QAFE_TEST_UPDATE set ADDRESS=:addressVar where ID=:idVar" where="IGNORED"/> */
public void testUpdateWithAllAttributesAndInParamsAsCollection() throws Exception {
List<HashMap<String, Object>> listRefVar = new ArrayList<HashMap<String, Object>>();
// Keys of the Map should be same as that of the reference variable used in the SQL statement.
HashMap<String, Object> hm1 = new HashMap<String, Object>();
hm1.put("idVar", new Integer(3));
hm1.put("addressVar", "Almeere");
HashMap<String, Object> hm2 = new HashMap<String, Object>();
hm2.put("idVar", new Integer(4));
hm2.put("addressVar", "Arhnem");
listRefVar.add(hm1);
listRefVar.add(hm2);
DataStore.store(dataId, "listRefVar", listRefVar);
manage("testUpdateWithAllAttributesAndInParamsAsCollection");
manage("testSelectAllToVerify");
assertEquals("Almeere", DataStore.getValue(dataId, "result[2].ADDRESS"));
assertEquals("Arhnem", DataStore.getValue(dataId, "result[3].ADDRESS"));
}
/* Testing with -> <update id="updateWithTableAndSqlAttribute" table="IGNORED" sql="update QAFE_TEST_UPDATE set ADDRESS=:addressVar, SALARY=:salaryVar where ID=:idVar"/> */
public void testUpdateWithTableAndSqlAttribute() throws Exception {
DataStore.store(dataId, "idRefVar", new Integer(1));
DataStore.store(dataId, "addressRefVar", "Cairo");
DataStore.store(dataId, "salaryRefVar", 4343);
manage("testUpdateWithTableAndSqlAttribute");
manage("testSelectAllToVerify");
assertEquals("Cairo", DataStore.getValue(dataId, "result[0].ADDRESS"));
assertEquals(4343, Integer.parseInt(DataStore.getValue(dataId, "result[0].SALARY").toString()));
}
/* Testing with -> <update id="updateWithSqlAndWhereAttribute" sql="update QAFE_TEST_UPDATE set NAME=:nameVar, ENTRY_DATE=:dateVar where ID=:idVar" where="IGNORED"/> */
public void testUpdateWithSqlAndWhereAttribute() throws Exception {
DataStore.store(dataId, "idRefVar", new Integer(2));
DataStore.store(dataId, "nameRefVar", "Muller");
DataStore.store(dataId, "dateRefVar", new Date("06/31/2012"));
manage("testUpdateWithSqlAndWhereAttribute");
manage("testSelectAllToVerify");
assertEquals("Muller", DataStore.getValue(dataId, "result[1].NAME"));
}
/* Testing with -> <update id="updateWithSqlAttributeAndSqlText" sql="update QAFE_TEST_UPDATE set ENTRY_DATE=:dateVar where ID=:idVar">IGNORED</update> */
public void testUpdateWithSqlAttributeAndSqlText() throws Exception {
DataStore.store(dataId, "idRefVar", new Integer(2));
DataStore.store(dataId, "dateRefVar", new Date("12/29/2012"));
manage("testUpdateWithSqlAttributeAndSqlText");
manage("testSelectAllToVerify");
assertEquals("2012-12-29 00:00:00.0", DataStore.getValue(dataId, "result[1].ENTRY_DATE").toString()); // Verifying data value.
}
/* Testing with -> <update id="updateWithTableAndWhereAttribute" table="QAFE_TEST_UPDATE" where="ID > :ID and ADDRESS=:ADDRESS"/> */
public void testUpdateWithTableAndWhereAttribute() throws Exception {
DataStore.store(dataId, "idRefVar", 2); // In where condition
DataStore.store(dataId, "nameRefVar", "Bennu");
DataStore.store(dataId, "addressRefVar", "C3"); // In where condition
DataStore.store(dataId, "emailRefVar", "z@z.com");
manage("testUpdateWithTableAndWhereAttribute");
manage("testSelectAllToVerify");
assertEquals("z@z.com", DataStore.getValue(dataId, "result[2].EMAIL"));
}
/*Testing with -> <update id="updateWithSQLTextUsingCDATA"><![CDATA[update QAFE_TEST_UPDATE set NAME=:nameVar, SALARY=:salaryVar where ID > :minIdVar and ID < :maxIdVar]]></update>*/
public void testUpdateWithSQLTextUsingCDATA() throws Exception {
DataStore.store(dataId, "nameRefVar", "Jupiter");
DataStore.store(dataId, "salaryRefVar", 400);
DataStore.store(dataId, "minRefVar", 0);
DataStore.store(dataId, "maxRefVar", 2);
manage("testUpdateWithSQLTextUsingCDATA");
manage("testSelectToVerify");
assertEquals("Jupiter", DataStore.getValue(dataId, "result[0].NAME"));
}
@Override
protected String[] getTearDownActions() {
return new String[]{"deleteData"};
}
}