/** * Copyright 2004-2017 the original author or authors. * * 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 com.ibatis.sqlmap; import com.ibatis.common.jdbc.exception.NestedSQLException; import testdomain.Account; import testdomain.Order; import java.sql.SQLException; import java.util.List; import java.util.Map; public class ResultMapTest extends BaseSqlMapTest { // SETUP & TEARDOWN @Override protected void setUp() throws Exception { initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null); initScript("scripts/account-init.sql"); initScript("scripts/order-init.sql"); initScript("scripts/line_item-init.sql"); } @Override protected void tearDown() throws Exception { } // RESULT MAP FEATURE TESTS public void testColumnsByName() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderLiteByColumnName", new Integer(1)); assertOrder1(order); } public void testExtendedResultMap() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderLiteByColumnName", new Integer(1)); assertOrder1(order); } public void testColumnsByIndex() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderLiteByColumnIndex", new Integer(1)); assertOrder1(order); } public void testNullValueReplacement() throws SQLException { Account account = (Account) sqlMap.queryForObject("getAccountViaColumnName", new Integer(5)); assertEquals("no_email@provided.com", account.getEmailAddress()); } public void testTypeSpecified() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderWithTypes", new Integer(1)); assertOrder1(order); } public void testComplexObjectMapping() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderWithAccount", new Integer(1)); assertOrder1(order); assertAccount1(order.getAccount()); } public void testCollectionMappingAndExtends() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderWithLineItemsCollection", new Integer(1)); assertOrder1(order); assertNotNull(order.getLineItems()); assertEquals(2, order.getLineItems().size()); } public void testListMapping() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderWithLineItems", new Integer(1)); assertOrder1(order); assertNotNull(order.getLineItemsList()); assertEquals(2, order.getLineItemsList().size()); } public void testGetAllLineItemProps() throws SQLException { List list = sqlMap.queryForList("getAllLineItemProps", new Integer(1)); assertNotNull(list); assertEquals(2, list.size()); } public void testGetSomeLineItemProps() throws SQLException { try { List list = sqlMap.queryForList("getSomeLineItemProps", new Integer(1)); fail("Expected exception because column was missing."); } catch (NestedSQLException e) { // expected } } public void testArrayMapping() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderWithLineItemArray", new Integer(1)); assertOrder1(order); assertNotNull(order.getLineItemArray()); assertEquals(2, order.getLineItemArray().length); } public void testHashMapMapping() throws SQLException { Map order = (Map) sqlMap.queryForObject("getOrderAsMap", new Integer(1)); assertOrder1(order); } public void testNestedObjects() throws SQLException { Order order = (Order) sqlMap.queryForObject("getOrderJoinedFavourite", new Integer(1)); assertOrder1(order); } public void testSimpleTypeMapping() throws SQLException { List list = sqlMap.queryForList("getAllCreditCardNumbersFromOrders", null); assertEquals(5, list.size()); assertEquals("555555555555", list.get(0)); } public void testCompositeKeyMapping() throws SQLException { Order order1 = (Order) sqlMap.queryForObject("getOrderWithFavouriteLineItem", new Integer(1)); Order order2 = (Order) sqlMap.queryForObject("getOrderWithFavouriteLineItem", new Integer(2)); assertNotNull(order1); assertNotNull(order1.getFavouriteLineItem()); assertEquals(2, order1.getFavouriteLineItem().getId()); assertEquals(1, order1.getFavouriteLineItem().getOrderId()); assertNotNull(order2); assertNotNull(order2.getFavouriteLineItem()); assertEquals(1, order2.getFavouriteLineItem().getId()); assertEquals(2, order2.getFavouriteLineItem().getOrderId()); } public void testDynCompositeKeyMapping() throws SQLException { Order order1 = (Order) sqlMap.queryForObject("getOrderWithDynFavouriteLineItem", new Integer(1)); assertNotNull(order1); assertNotNull(order1.getFavouriteLineItem()); assertEquals(2, order1.getFavouriteLineItem().getId()); assertEquals(1, order1.getFavouriteLineItem().getOrderId()); } public void testGetDoubleNestedResult() throws SQLException { Account account = (Account) sqlMap.queryForObject("getNestedAccountViaColumnName", new Integer(1)); assertAccount1(account); } }