/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.test.cmp2.commerce; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Set; import java.util.Properties; import javax.naming.InitialContext; import junit.framework.Test; import org.jboss.test.JBossTestCase; import org.jboss.test.util.ejb.EJBTestCase; public class CommerceTest extends EJBTestCase { public static Test suite() throws Exception { return JBossTestCase.getDeploySetup( CommerceTest.class, "cmp2-commerce.jar"); } public CommerceTest(String name) { super(name); } private OrderHome getOrderHome() { try { InitialContext jndiContext = new InitialContext(); return (OrderHome) jndiContext.lookup("commerce/Order"); } catch(Exception e) { e.printStackTrace(); fail("Exception in getOrderHome: " + e.getMessage()); } return null; } private LineItemHome getLineItemHome() { try { InitialContext jndiContext = new InitialContext(); return (LineItemHome) jndiContext.lookup("commerce/LineItem"); } catch(Exception e) { e.printStackTrace(); fail("Exception in getLineItemHome: " + e.getMessage()); } return null; } private ProductHome getProductHome() { try { InitialContext jndiContext = new InitialContext(); return (ProductHome) jndiContext.lookup("commerce/Product"); } catch(Exception e) { e.printStackTrace(); fail("Exception in getProductHome: " + e.getMessage()); } return null; } private AddressHome getAddressHome() { try { InitialContext jndiContext = new InitialContext(); return (AddressHome) jndiContext.lookup("commerce/Address"); } catch(Exception e) { e.printStackTrace(); fail("Exception in getAddressHome: " + e.getMessage()); } return null; } public void test_setInPostCreate() throws Exception { OrderHome oh = getOrderHome(); LineItemHome lh = getLineItemHome(); LineItem l =lh.create(); Order o = oh.create(); l = lh.create(o); assertTrue(l.getOrder().isIdentical(o)); } public void test_dvo() throws Exception { OrderHome orderHome = getOrderHome(); Order order = orderHome.create(); Long ordernumber = order.getOrdernumber(); // setup credit card Card creditCard = new Card(); creditCard.setType(Card.VISA); creditCard.setCardNumber("1111-2222-3333-4444"); creditCard.setCardHolder(new FormalName("Dain", 'S', "Sundstrom")); creditCard.setBillingZip(55414); order.setCreditCard(creditCard); assertEquals(order.getCreditCard(), creditCard); order = null; order = orderHome.findByPrimaryKey(ordernumber); assertEquals(order.getCreditCard(), creditCard); } public void test_getOrdersShippedToCA() throws Exception { OrderHome orderHome = getOrderHome(); AddressHome addressHome = getAddressHome(); Order orderCA1 = orderHome.create(); Address shipCA1 = addressHome.create(); shipCA1.setState("CA"); orderCA1.setShippingAddress(shipCA1); Order orderCA2 = orderHome.create(); Address shipCA2 = addressHome.create(); shipCA2.setState("CA"); orderCA2.setShippingAddress(shipCA2); Order orderMN = orderHome.create(); Address shipMN = addressHome.create(); shipMN.setState("MN"); orderMN.setShippingAddress(shipMN); Set s = orderMN.getOrdersShippedToCA(); System.out.println(s); assertTrue(s.contains(orderCA1)); assertTrue(s.contains(orderCA2)); assertTrue(!s.contains(orderMN)); assertTrue(s.size()==2); s = orderMN.getOrdersShippedToCA2(); System.out.println(s); assertTrue(s.contains(orderCA1)); assertTrue(s.contains(orderCA2)); assertTrue(!s.contains(orderMN)); assertTrue(s.size()==2); } public void test_getStatesShipedTo() throws Exception { OrderHome orderHome = getOrderHome(); AddressHome addressHome = getAddressHome(); Order orderCA1 = orderHome.create(); Address shipCA1 = addressHome.create(); shipCA1.setState("CA"); orderCA1.setShippingAddress(shipCA1); Order orderCA2 = orderHome.create(); Address shipCA2 = addressHome.create(); shipCA2.setState("CA"); orderCA2.setShippingAddress(shipCA2); Order orderMN = orderHome.create(); Address shipMN = addressHome.create(); shipMN.setState("MN"); orderMN.setShippingAddress(shipMN); System.out.println("orderMN.getStatesShipedTo();"); Collection c = orderMN.getStatesShipedTo(); System.out.println(c); assertTrue(c.contains("CA")); assertTrue(c.contains("MN")); assertTrue(c.size()==3); c = orderMN.getStatesShipedTo2(); System.out.println(c); assertTrue(c.contains("CA")); assertTrue(c.contains("MN")); assertTrue(c.size()==3); } public void test_getAddressesInCA() throws Exception { OrderHome orderHome = getOrderHome(); AddressHome addressHome = getAddressHome(); Order orderCA1 = orderHome.create(); Address shipCA1 = addressHome.create(); shipCA1.setState("CA"); orderCA1.setShippingAddress(shipCA1); Address billCA1 = addressHome.create(); billCA1.setState("CA"); orderCA1.setBillingAddress(billCA1); Order orderCA2 = orderHome.create(); Address shipCA2 = addressHome.create(); shipCA2.setState("CA"); orderCA2.setShippingAddress(shipCA2); orderCA2.setBillingAddress(shipCA2); Order orderMN = orderHome.create(); Address shipMN = addressHome.create(); shipMN.setState("MN"); orderMN.setShippingAddress(shipMN); Collection c = orderMN.getAddressesInCA(); System.out.println(c); assertTrue(c.contains(shipCA1)); assertTrue(c.contains(shipCA2)); assertTrue(c.contains(billCA1)); assertTrue(c.size()==3); c = orderMN.getAddressesInCA2(); System.out.println(c); assertTrue(c.contains(shipCA1)); assertTrue(c.contains(shipCA2)); assertTrue(c.contains(billCA1)); assertTrue(c.size()==3); } public void test_findDoubleJoin() throws Exception { OrderHome orderHome = getOrderHome(); LineItemHome lineItemHome = getLineItemHome(); Order order1 = orderHome.create(); LineItem line1 = lineItemHome.create(); line1.setQuantity(1); order1.getLineItems().add(line1); LineItem line2 = lineItemHome.create(); line2.setQuantity(2); order1.getLineItems().add(line2); Order order2 = orderHome.create(); LineItem line3 = lineItemHome.create(); line3.setQuantity(2); order2.getLineItems().add(line3); Collection c = orderHome.findDoubleJoin(1, 2); assertTrue(c.contains(order1)); assertTrue(!c.contains(order2)); assertTrue(c.size()==1); } public void testCMRReset() throws Exception { OrderHome orderHome = getOrderHome(); LineItemHome lineItemHome = getLineItemHome(); Order order = orderHome.create(); Collection lineItems = order.getLineItems(); LineItem line1 = lineItemHome.create(); line1.setQuantity(1); lineItems.add(line1); LineItem line2 = lineItemHome.create(); line2.setQuantity(2); lineItems.add(line2); LineItem line3 = lineItemHome.create(); line3.setQuantity(2); lineItems.add(line3); assertEquals(lineItems.size(), 3); assertTrue(lineItems == order.getLineItems()); order.setLineItems(lineItems); assertEquals(lineItems.size(), 3); assertTrue(lineItems == order.getLineItems()); } public void testCMRSetFromNewCollection() throws Exception { OrderHome orderHome = getOrderHome(); LineItemHome lineItemHome = getLineItemHome(); Order order = orderHome.create(); Collection lineItems = new ArrayList(); LineItem line1 = lineItemHome.create(); line1.setQuantity(1); lineItems.add(line1); LineItem line2 = lineItemHome.create(); line2.setQuantity(2); lineItems.add(line2); LineItem line3 = lineItemHome.create(); line3.setQuantity(2); lineItems.add(line3); assertEquals(lineItems.size(), 3); order.setLineItems(lineItems); assertEquals(lineItems.size(), 3); assertEquals(order.getLineItems().size(), 3); } public void testIsIdentical() throws Exception { OrderHome orderHome = getOrderHome(); Order order = orderHome.create(new Long(111)); LineItemHome liHome = getLineItemHome(); LineItem lineItem = liHome.create(new Long(111)); assertTrue("!order.isIdentical(lineItem)", !order.isIdentical(lineItem)); assertTrue("order.isIdentical(order)", order.isIdentical(order)); } public void testOverloadedEjbSelects() throws Exception { getAddressHome().selectAddresses(""); } public void setUpEJB(Properties props) throws Exception { deleteAllOrders(getOrderHome()); deleteAllLineItems(getLineItemHome()); deleteAllProducts(getProductHome()); deleteAllAddresses(getAddressHome()); } public void tearDownEJB(Properties props) throws Exception { deleteAllOrders(getOrderHome()); deleteAllLineItems(getLineItemHome()); deleteAllProducts(getProductHome()); deleteAllAddresses(getAddressHome()); } public void deleteAllOrders(OrderHome orderHome) throws Exception { Iterator orders = orderHome.findAll().iterator(); while(orders.hasNext()) { Order order = (Order)orders.next(); order.remove(); } } public void deleteAllLineItems(LineItemHome lineItemHome) throws Exception { Iterator lineItems = lineItemHome.findAll().iterator(); while(lineItems.hasNext()) { LineItem lineItem = (LineItem)lineItems.next(); lineItem.remove(); } } public void deleteAllProducts(ProductHome productHome) throws Exception { Iterator products = productHome.findAll().iterator(); while(products.hasNext()) { Product product = (Product)products.next(); product.remove(); } } public void deleteAllAddresses(AddressHome addressHome) throws Exception { Iterator addresses = addressHome.findAll().iterator(); while(addresses.hasNext()) { Address address = (Address)addresses.next(); address.remove(); } } }