Package org.jboss.seam.example.spring.test

Source Code of org.jboss.seam.example.spring.test.StartupTest

//$Id: StartupTest.java 8034 2008-04-28 09:40:29Z pete.muir@jboss.org $
package org.jboss.seam.example.spring.test;

import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Manager;
import org.jboss.seam.example.spring.Booking;
import org.jboss.seam.example.spring.HibernateTestService;
import org.jboss.seam.example.spring.Hotel;
import org.jboss.seam.example.spring.HotelBookingAction;
import org.jboss.seam.example.spring.User;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;

public class StartupTest extends SeamTest {

  @Test
  public void testRegister() throws Exception {
    new FacesRequest("/register.xhtml") {
      /**
       * @see org.jboss.seam.mock.AbstractSeamTest.Request#updateModelValues()
       */
      @Override
      protected void updateModelValues() throws Exception {
        setValue("#{user.username}", "testUser");
        setValue("#{user.name}", "Test User's Name");
        setValue("#{user.password}", "password");
        setValue("#{register.verify}", "password");
      }
      /**
       * @see org.jboss.seam.mock.AbstractSeamTest.Request#invokeApplication()
       */
      @Override
      protected void invokeApplication() throws Exception {
        invokeAction("#{register.register}");
      }
    }.run();
  }
 
  @Test(dependsOnMethods="testRegister")
  public void testBooking() throws Exception {
    new FacesRequest() {

      @Override
      protected void invokeApplication() throws Exception {
        Contexts.getSessionContext().set("user", new User("Gavin King", "foobar", "gavin"));
        setValue("#{identity.username}", "gavin");
        setValue("#{identity.password}", "foobar");
        invokeAction("#{identity.login}");
      }

    }.run();

    new FacesRequest("/main.xhtml") {

      @Override
      protected void invokeApplication() {
        assert invokeAction("#{hotelSearch.find}") == null;
      }

      @Override
      protected void renderResponse() {
        DataModel hotels = (DataModel) getValue("#{hotels}");
        hotels.setRowIndex(0);
        assert ((Hotel) hotels.getRowData()).getName().equals(HibernateTestService.HIBERNATE_HOTEL_NAME);
      }

    }.run();

    String id = new FacesRequest("/main.xhtml") {

      @Override
      protected void invokeApplication() throws Exception {
        HotelBookingAction hotelBooking = (HotelBookingAction) getInstance("hotelBooking");
        DataModel hotels = (DataModel) Contexts.getSessionContext().get("hotels");
        hotels.setRowIndex(0);
        hotelBooking.selectHotel((Hotel) hotels.getRowData());
      }

    }.run();

    id = new FacesRequest("/hotel.xhtml", id) {

      @Override
      protected void invokeApplication() {
        invokeAction("#{hotelBooking.bookHotel}");
      }

      @Override
      protected void renderResponse() {
        assert getValue("#{booking.user}") != null;
        assert getValue("#{booking.hotel}") != null;
        assert getValue("#{booking.creditCard}") == null;
        assert getValue("#{booking.creditCardName}") == null;
        Booking booking = (Booking) Contexts.getConversationContext().get("booking");
        assert booking.getHotel() == Contexts.getConversationContext().get("hotel");
        assert booking.getUser() == Contexts.getSessionContext().get("user");
        assert Manager.instance().isLongRunningConversation();
      }

    }.run();

    new FacesRequest("/book.xhtml", id) {

      @Override
      @SuppressWarnings("deprecation")
      protected void updateModelValues() throws Exception {
        setValue("#{booking.creditCard}", "1234567891021234");
        setValue("#{booking.creditCardName}", "GAVIN KING");
        setValue("#{booking.beds}", 2);
        Date now = new Date();
        setValue("#{booking.checkinDate}", now);
        setValue("#{booking.checkoutDate}", now);
      }

      @Override
      protected void invokeApplication() {
        assert invokeAction("#{hotelBooking.setBookingDetails}") == null;
      }

      @Override
      protected void renderResponse() {
        Iterator messages = FacesContext.getCurrentInstance().getMessages();
        assert messages.hasNext();
        FacesMessage message = (FacesMessage) messages.next();
        assert message.getSummary().equals("Check out date must be later than check in date");
        assert !messages.hasNext();
        assert Manager.instance().isLongRunningConversation();
      }

      @Override
      protected void afterRequest() {
        assert isInvokeApplicationComplete();
      }

    }.run();

    new FacesRequest("/book.xhtml", id) {

      @Override
      @SuppressWarnings("deprecation")
      protected void updateModelValues() throws Exception {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_MONTH, 2);
        setValue("#{booking.checkoutDate}", cal.getTime());
      }

      @Override
      protected void invokeApplication() {
        invokeAction("#{hotelBooking.setBookingDetails}");
      }

      @Override
      protected void renderResponse() {
        assert Manager.instance().isLongRunningConversation();
      }

      @Override
      protected void afterRequest() {
        assert isInvokeApplicationComplete();
      }

    }.run();

    new FacesRequest("/confirm.xhtml", id) {

      @Override
      protected void invokeApplication() {
        invokeAction("#{hotelBooking.confirm}");
      }

      @Override
      protected void afterRequest() {
        assert isInvokeApplicationComplete();
      }

    }.run();

    new NonFacesRequest("/main.xhtml") {

      @Override
      protected void renderResponse() {
        ListDataModel bookings = (ListDataModel) getInstance("bookings");
        assert bookings.getRowCount() == 1;
        bookings.setRowIndex(0);
        Booking booking = (Booking) bookings.getRowData();
        assert booking.getHotel().getName().equals(HibernateTestService.HIBERNATE_HOTEL_NAME);
        assert booking.getUser().getUsername().equals("gavin");
      }

    }.run();
  }
}
TOP

Related Classes of org.jboss.seam.example.spring.test.StartupTest

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.