Package com.jboss.dvd.seam.test

Source Code of com.jboss.dvd.seam.test.OrderTest$Wrapper

package com.jboss.dvd.seam.test;

import java.util.ArrayList;
import java.util.List;

import javax.el.ELException;
import javax.faces.model.DataModel;

import org.jboss.seam.core.Conversation;
import org.jboss.seam.mock.SeamTest;
import org.jboss.seam.security.NotLoggedInException;
import org.testng.annotations.Test;

import com.jboss.dvd.seam.Order;
import com.jboss.dvd.seam.Product;
import com.jboss.dvd.seam.ShoppingCart;
import com.jboss.dvd.seam.User;
import com.jboss.dvd.seam.Order.Status;

public class OrderTest
    extends SeamTest
{
   
    @Test
    public void selectDvd()
        throws Exception
    {
        new FacesRequest("/dvd.xhtml") {
            @Override
            protected void  beforeRequest() {
                setParameter("id", "41");
            }

            @Override
            protected void renderResponse() throws Exception {
                Product dvd = (Product) getValue("#{dvd}");
                assert dvd != null;
                assert dvd.getProductId() == 41;                              
            }
        }.run();
    }
       
    @Test
    public void addToCart()
        throws Exception
    {
        String id = new FacesRequest("/dvd.xhtml") {
            @Override
            protected void beforeRequest() {
                setParameter("id", "41");
            }
        }.run();
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{search.addToCart}");
            }
           
            @Override
            protected void renderResponse() throws Exception {
                ShoppingCart cart = (ShoppingCart) getValue("#{cart}");
                assert cart != null;
                assert cart.getCart().size() == 1;
            }
        }.run();
       
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void beforeRequest() {
                setParameter("id", "42");
            }         
        }.run();
       
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{search.addToCart}");
            }
           
            @Override
            protected void renderResponse() throws Exception {
                ShoppingCart cart = (ShoppingCart) getValue("#{cart}");
                assert cart != null;
                assert cart.getCart().size() == 2;
            }
        }.run();
       
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void beforeRequest() {
                setParameter("id", "41");
            }        
        }.run();
       
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{search.addToCart}");
            }
           
            @Override
            protected void renderResponse() throws Exception {
                ShoppingCart cart = (ShoppingCart) getValue("#{cart}");
                assert cart != null;
                assert cart.getCart().size() == 2;
            }
        }.run();
       
       
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void beforeRequest() {
                setParameter("id", "43");
            }          
        }.run();
       
        new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{search.addToCart}");
            }
           
            @Override
            protected void renderResponse() throws Exception {
                ShoppingCart cart = (ShoppingCart) getValue("#{cart}");
                assert cart != null;
                assert cart.getCart().size() == 3;
            }
        }.run();
       
    }
   
    @Test
    public void checkoutNotLoggedIn() throws Exception {
        String id = new FacesRequest("/dvd.xhtml") {
            @Override
            protected void beforeRequest() {
                setParameter("id", "41");
            }
        }.run();
       
        id = new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{search.addToCart}");
            }
        }.run();
       
        id = new FacesRequest("/checkout.xhtml", id) {
        }.run();
            
        id = new FacesRequest("/checkout.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{checkout.createOrder}");
            }
            @Override
            protected void renderResponse() throws Exception {
                Order order = (Order) getValue("#{order}");
                assert order != null;
               
            }
        }.run();   
       
        id = new FacesRequest("/checkout.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                try {
                    invokeAction("#{checkout.submitOrder}");
                    assert false; // should fail
                } catch (ELException e) {
                    assert e.getCause() instanceof NotLoggedInException;
                }
            }
            @Override
            protected void renderResponse() throws Exception {
                Order order = (Order) getValue("#{order}");
                assert order != null;
            }
        }.run();   
       
        id = new FacesRequest("/checkout.xhtml", id) {
            @Override
            protected void applyRequestValues() throws Exception {
               setValue("#{identity.username}", "user1");
               setValue("#{identity.password}", "password");
            }
            protected void invokeApplication() throws Exception {
                invokeAction("#{identity.login}");
            }
            @Override
            protected void renderResponse() throws Exception {
                assert getValue("#{identity.loggedIn}").equals(Boolean.TRUE);
                User currentUser = (User) getValue("#{currentUser}");
                assert currentUser.getUserName().equals("user1");
            }
        }.run();      
       
    }
   
    public long makeOrder() throws Exception {
        String id = new FacesRequest("/dvd.xhtml") {
            @Override
            protected void beforeRequest() {
                setParameter("id", "41");
            }
        }.run();
       
        id = new FacesRequest("/dvd.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{search.addToCart}");
            }
        }.run();
       
        id = new NonFacesRequest("/checkout.xhtml", id) {
        }.run();
       
        id = new FacesRequest("/checkout.xhtml", id) {
            @Override
            protected void applyRequestValues() throws Exception {
               setValue("#{identity.username}", "user1");
               setValue("#{identity.password}", "password");
            }
            protected void invokeApplication() throws Exception {
                invokeAction("#{identity.login}");
            }
            @Override
            protected void renderResponse() throws Exception {
                assert getValue("#{identity.loggedIn}").equals(Boolean.TRUE);
                User currentUser = (User) getValue("#{currentUser}");
                assert currentUser.getUserName().equals("user1");
            }
        }.run();      

        id = new FacesRequest("/checkout.xhtml", id) {
            @Override
            protected void invokeApplication() throws Exception {            
                invokeAction("#{checkout.createOrder}");
                Order order = (Order) getValue("#{currentOrder}");
                assert order!=null;
            }        
        }.run();                  
       
        id = new NonFacesRequest("/confirm.xhtml", id) {                  
        }.run();   
               
       
        final Wrapper<Long> orderId = new Wrapper<Long>();
       
        id = new FacesRequest("/confirm.xhtml", id) {
            protected void invokeApplication() throws Exception {
                invokeAction("#{checkout.submitOrder}");
            }
            @Override
            protected void renderResponse() throws Exception {
                Order order = (Order) getValue("#{completedOrder}");
                assert order!=null;
                assert order.getCustomer().getUserName().equals("user1");
                assert order.getStatus().equals(Status.OPEN);
               
                orderId.setValue(order.getOrderId());
            }
        }.run();
       
        return orderId.getValue();
    }
   
    @Test
    public void checkout() throws Exception {
        makeOrder();
    }
   
    @Test
    public void showOrders() throws Exception {
        final long order1 = makeOrder();
        final long order2 = makeOrder();
        final long order3 = makeOrder();
       
        new NonFacesRequest("/showOrders.xhtml") {
            @SuppressWarnings("unchecked")
            @Override
            protected void renderResponse() throws Exception {
                DataModel model = (DataModel) getValue("#{orders}");

                List<Long> orders = new ArrayList<Long>();
                for (Order order: (List<Order>) model.getWrappedData()) {
                    orders.add(order.getOrderId());
                }

                assert orders.contains(order1);
                assert orders.contains(order2);
                assert orders.contains(order3);
            }
           
        }.run();       
    }
   
   
    @Test
    public void cancelOrder() throws Exception {
        final long order1 = makeOrder();     
       
        String id = new NonFacesRequest("/showorders.xhtml") {
            @SuppressWarnings("unchecked")
            @Override
            protected void renderResponse() throws Exception {
                DataModel model = (DataModel) getValue("#{orders}");
                assert model!=null;
               
                assert Conversation.instance().isLongRunning();
            }
           
        }.run()
       
        id = new FacesRequest("/showorders.xhtml",id) {
            @SuppressWarnings("unchecked")
            @Override
            protected void applyRequestValues() throws Exception {
               DataModel model = (DataModel) getValue("#{orders}");
           
               int index =0;
               for (Order order: (List<Order>) model.getWrappedData()) {
                   if (order.getOrderId() == order1) {
                       model.setRowIndex(index);
                       break;
                   }
                   index++;
               }
            }
        
            @Override
            protected void invokeApplication() throws Exception {
               invokeAction("#{showorders.detailOrder}");
            }
           
            @Override
            protected void renderResponse() throws Exception {
                assert false;
            }
        }.run();
       
        id = new FacesRequest("/showorders.xhtml",id) {          
            @Override
            protected void renderResponse() throws Exception {
                Order order = (Order) getValue("#{myorder}");               
                assert order.getOrderId() == order1;
                assert order.getStatus() == Status.OPEN;

            }
        }.run();
       
        id = new FacesRequest("/showorders.xhtml",id) { 
            @Override
            protected void invokeApplication() throws Exception {
                invokeAction("#{showorders.cancelOrder}");
            }
            @Override
            protected void renderResponse() throws Exception {
                Order order = (Order) getValue("#{myorder}");               
                assert order.getOrderId() == order1;
                assert order.getStatus() == Status.CANCELLED;
                assert false;
            }
        }.run();
    }
   
   
    static class Wrapper<T> {
        T value;
       
        public void setValue(T value) {
            this.value = value;
        }
       
        public T getValue() {
            return value;
        }
    }
}
TOP

Related Classes of com.jboss.dvd.seam.test.OrderTest$Wrapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.