[jboss-cvs] jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test ...

Peter Muir peter at bleepbleep.org.uk
Mon Oct 8 07:48:37 EDT 2007


  User: pmuir   
  Date: 07/10/08 07:48:37

  Modified:    examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test          
                        testng.xml BaseData.xml
  Added:       examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test          
                        EditArtistTest.java DisplayDiscTest.java
                        LoginTest.java TestStrings.java
                        DisplayArtistTest.java EditDiscTest.java
  Removed:     examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test          
                        EditTest.java DisplayTest.java
  Log:
  Second pass at Seamdiscs tests
  
  Revision  Changes    Path
  1.2       +25 -3     jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/testng.xml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: testng.xml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/testng.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- testng.xml	8 Oct 2007 10:34:08 -0000	1.1
  +++ testng.xml	8 Oct 2007 11:48:37 -0000	1.2
  @@ -1,12 +1,34 @@
   <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
   <suite name="SeamDiscs" verbose="2" parallel="false">
  -    <test name="SeamDiscs: Functional Tests">
  +    <test name="SeamDiscs: Artist Tests">
         
           <parameter name="datasourceJndiName" value="java:/seamdiscsDatasource"/>
       
           <classes>
  -            <class name="org.jboss.seam.example.seamdiscs.test.DisplayTest" />
  -            <class name="org.jboss.seam.example.seamdiscs.test.EditTest" />
  +            <class name="org.jboss.seam.example.seamdiscs.test.DisplayArtistTest" />
  +            <class name="org.jboss.seam.example.seamdiscs.test.EditArtistTest" />
           </classes>
  +    
  +    </test>
  +    
  +    <test name="SeamDiscs: Disc Tests">
  +      
  +        <parameter name="datasourceJndiName" value="java:/seamdiscsDatasource"/>
  +    
  +        <classes>
  +            <class name="org.jboss.seam.example.seamdiscs.test.DisplayDiscTest" />
  +            <class name="org.jboss.seam.example.seamdiscs.test.EditDiscTest" />
  +        </classes>
  +        
  +    </test>
  +    
  +    <test name="SeamDiscs: Login Test">
  +    
  +        <parameter name="datasourceJndiName" value="java:/seamdiscsDatasource"/>
  +    
  +        <classes>
  +            <class name="org.jboss.seam.example.seamdiscs.test.LoginTest" />
  +        </classes>
  +    
       </test>
   </suite>
  
  
  
  1.2       +1 -1      jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/BaseData.xml
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BaseData.xml
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/BaseData.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- BaseData.xml	8 Oct 2007 10:34:09 -0000	1.1
  +++ BaseData.xml	8 Oct 2007 11:48:37 -0000	1.2
  @@ -49,7 +49,7 @@
      
      <DISC
         id="4"
  -      name="The Freewheein' Bob Dylan"
  +      name="The Freewheelin' Bob Dylan"
         artist_id="3" />
         
      <DISC
  
  
  
  1.1      date: 2007/10/08 11:48:37;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/EditArtistTest.java
  
  Index: EditArtistTest.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.example.seamdiscs.test;
  
  import javax.el.PropertyNotFoundException;
  
  import org.jboss.seam.mock.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  /**
   * @author Pete Muir
   *
   */
  public class EditArtistTest extends DBUnitSeamTest{
      
      private static final String NEW_DESCRIPTION_1 = "A great band";
  
      @Override
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/example/seamdiscs/test/BaseData.xml")
          );
      }
      
      @Test
      public void testEditArtist() throws Exception
      {
          final String cid = new FacesRequest("/artist.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("artistId", "1");
                  setParameter("conversationPropagation", "join");
              }
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", "administrator");
                  setValue("#{identity.password}", "administrator");
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert (Boolean) getValue("#{identity.loggedIn}");
                  assert ((Integer) 1).equals(getValue("#{artistHome.id}"));
                  assert "Pink Floyd".equals(getValue("#{artist.name}"));
                  assert getValue("#{artist.description}") == null;
                  assert isLongRunningConversation();
                  assert (Boolean) getValue("#{artistHome.managed}");
                  
              }
          }.run();
          
          new FacesRequest("/artist.xhtml", cid)
          {      
              
              @Override
              protected void updateModelValues() throws Exception 
              {
                  setValue("#{artist.description}", NEW_DESCRIPTION_1);
                  assert isLongRunningConversation();
                  assert cid.equals(getConversationId());
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert "updated".equals(invokeAction("#{artistHome.update}"));
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert NEW_DESCRIPTION_1.equals(getValue("#{artist.description"));
                  assert isLongRunningConversation();
              }
              
          }.run();
      }
      
      @Test
      public void testAddArtist() throws Exception
      {
          final String cid = new FacesRequest("/artist.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("conversationPropagation", "join");
              }
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", "administrator");
                  setValue("#{identity.password}", "administrator");
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert (Boolean) getValue("#{identity.loggedIn}");
                  assert null == getValue("#{artistHome.id}");
                  assert null == getValue("#{artist.name}");
                  assert isLongRunningConversation();
                  assert (!(Boolean) getValue("#{artistHome.managed}"));
              }
          }.run();
          
          new FacesRequest("/artist.xhtml", cid)
          {      
              
              @Override
              protected void updateModelValues() throws Exception 
              {
                  setValue("#{artist.name}", "Pete Muir");
                  assert isLongRunningConversation();
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert "persisted".equals(invokeAction("#{artistHome.persist}"));
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert "Pete Muir".equals(getValue("#{artist.name}"));
              }
              
          }.run();
          
          new FacesRequest("/artists.xhtml", cid)
          {
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert new Long("7").equals(getValue("#{artists.resultCount}"));
                  assert "Pete Muir".equals(getValue("#{artists.resultList[3].name}"));
                  assert "Led Zepplin".equals(getValue("#{artists.resultList[4].name}"));
              }
              
          }.run();        
      }
  
      @Test
      public void testAddBand() throws Exception
      {
          final String cid = new FacesRequest("/artist.xhtml")
          {
              
              @Override
              protected void beforeRequest() 
              {
                  setParameter("conversationPropagation", "join");
              }
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", "administrator");
                  setValue("#{identity.password}", "administrator");
                  setValue("#{artistHome.type}", "band");
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert (Boolean) getValue("#{identity.loggedIn}");
                  assert null == getValue("#{artistHome.id}");
                  assert null == getValue("#{artist.name}");
                  try
                  {
                      assert ((Integer) 0).equals(getValue("#{artist.bandMembers.size}"));
                  }
                  catch (PropertyNotFoundException e) 
                  {
                      assert false;
                  }
                  assert isLongRunningConversation();
                  assert (!(Boolean) getValue("#{artistHome.managed}"));
              }
          }.run();
          
          new FacesRequest("/artist.xhtml", cid)
          {      
              
              @Override
              protected void updateModelValues() throws Exception 
              {
                  setValue("#{artist.name}", "Pete Muir's Band");
                  assert isLongRunningConversation();
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert "persisted".equals(invokeAction("#{artistHome.persist}"));
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert "Pete Muir's Band".equals(getValue("#{artist.name}"));
                  assert ((Integer) 0).equals("#{artist.bandMembers.size}");
              }
              
          }.run();
          
          new FacesRequest("/artists.xhtml", cid)
          {
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert new Long("7").equals(getValue("#{artists.resultCount}"));
                  assert "Pete Muir's Band".equals(getValue("#{artists.resultList[3].name}"));
                  assert "Led Zepplin".equals(getValue("#{artists.resultList[4].name}"));
              }
              
          }.run();
      }
      
      @Test
      public void testAddBandMember() throws Exception
      {
          final String cid = new FacesRequest("/artist.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("artistId", "1");
                  setParameter("conversationPropagation", "join");
              }
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", "administrator");
                  setValue("#{identity.password}", "administrator");
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert "Pink Floyd".equals(getValue("#{artist.name}"));
                  assert ((Integer) 3).equals(getValue("#{artist.bandMembers.size}"));
              }
          }.run();
          
          new FacesRequest("/artist.xhtml", cid)
          {
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert null == invokeAction("#{artistHome.addBandMember}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert ((Integer) 4).equals(getValue("#{artist.bandMembers.size}"));
              }
              
          }.run();
          
          new FacesRequest("/artist.xhtml", cid)
          {       
              
              @Override
              protected void updateModelValues() throws Exception 
              {
                  setValue("#{artist.bandMembers[3].name}", "Pete Muir");
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert "updated" == invokeAction("#{artistHome.update}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert ((Integer) 4).equals(getValue("#{artist.size}"));
                  assert "Pete Muir".equals(getValue("#{artist.bandMembers[3].name}"));
              }
              
          }.run();
  
      }
      
  }
  
  
  
  1.1      date: 2007/10/08 11:48:37;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/DisplayDiscTest.java
  
  Index: DisplayDiscTest.java
  ===================================================================
  package org.jboss.seam.example.seamdiscs.test;
  
  import javax.faces.model.DataModel;
  
  import org.jboss.seam.example.seamdiscs.model.Disc;
  import org.jboss.seam.mock.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  public class DisplayDiscTest extends DBUnitSeamTest
  {
      
      @Override
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/example/seamdiscs/test/BaseData.xml")
          );
      }
  
      @Test
      public void testDisplayDiscs() throws Exception
      {
          new FacesRequest("/discs.xhtml")
          {
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  Object discs = getValue("#{discs.dataModel}");
                  assert discs instanceof DataModel;
                  DataModel dataModel = (DataModel) discs;
                  
                  // Check for the correct number of results
                  assert dataModel.getRowCount() == 6;
                  
                  // Check for correct ordering
                  assertDisc(dataModel, 0, "Blood on the Tracks", "Bob Dylan");
                  assertDisc(dataModel, 1, "Chavez Ravine", "Ry Cooder");
                  assertDisc(dataModel, 2, "Dark Side of the Moon", "Pink Floyd");
                  assertDisc(dataModel, 3, "Liege and Lief", "Fairport Convention");
                  assertDisc(dataModel, 4, "The Freewheelin' Bob Dylan", "Bob Dylan");
                  assertDisc(dataModel, 5, "The Wall", "Pink Floyd");
              }
              
          }.run();
      }
      
      @Test
      public void testDisplayDisc() throws Exception
      {
          // TODO Test navigation, but need a MockNavigationHandler
          new NonFacesRequest("/discs.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("actionOutcome", "disc");
                  setParameter("discId", "3");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert ((Integer) 3).equals(getValue("#{discHome.id}"));
                  Object object = null;
                  object = getValue("#{disc}");
                  assert object instanceof Disc;
                  Disc disc1 = (Disc) object;
                  assert "The Wall".equals(disc1.getName());
              }
          }.run();
      }
      
      
      
      private void assertDisc(DataModel dataModel, int row, String discName, String artistName)
      {
          dataModel.setRowIndex(row);
          Object rowData = dataModel.getRowData();
          assert rowData instanceof Disc;
          Disc disc = (Disc) rowData;
          assert discName.equals(disc.getName());
          assert artistName.equals(disc.getArtist().getName());
      }
      
  }
  
  
  
  1.1      date: 2007/10/08 11:48:37;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/LoginTest.java
  
  Index: LoginTest.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.example.seamdiscs.test;
  
  import static org.jboss.seam.example.seamdiscs.test.TestStrings.*;
  
  import org.jboss.seam.mock.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  /**
   * @author Pete Muir
   *
   */
  public class LoginTest extends DBUnitSeamTest {
      
      @Override
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/example/seamdiscs/test/BaseData.xml")
          );
      }
      
      @Test
      public void testLogin() throws Exception
      {
          new FacesRequest("/login.xhtml")
          {
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", USERNAME);
                  setValue("#{identity.password}", PASSWORD);
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert (Boolean) getValue("#{identity.loggedIn}");
              }
          }.run();
          
          new FacesRequest("/login.xhtml")
          {
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", USERNAME);
                  setValue("#{identity.password}", WRONG_PASSWORD);
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert !((Boolean) getValue("#{identity.loggedIn}"));
              }
          }.run();
          
          new FacesRequest("/login.xhtml")
          {
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", WRONG_USERNAME);
                  setValue("#{identity.password}", PASSWORD);
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert !((Boolean) getValue("#{identity.loggedIn}"));
              }
          }.run();
          
          new FacesRequest("/login.xhtml")
          {
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", WRONG_USERNAME);
                  setValue("#{identity.password}", WRONG_PASSWORD);
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert !((Boolean) getValue("#{identity.loggedIn}"));
              }
          }.run();
      }
  
  }
  
  
  
  1.1      date: 2007/10/08 11:48:37;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/TestStrings.java
  
  Index: TestStrings.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.example.seamdiscs.test;
  
  /**
   * @author Pete Muir
   *
   */
  public class TestStrings {
  
      public static final String USERNAME = "administrator";
      public static final String PASSWORD = "administrator";
      public static final String WRONG_USERNAME = "wrongUsername";
      public static final String WRONG_PASSWORD = "wrongPassword";
      
      public static final String DISC4_NAME = "The Freewheelin' Bob Dylan";
      public static final String DISC4_NEW_DESCRIPTION = "A classic album";
      public static final String NEW_DISC_NAME = "Pete Muir's Debut Album";
  }
  
  
  
  1.1      date: 2007/10/08 11:48:37;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/DisplayArtistTest.java
  
  Index: DisplayArtistTest.java
  ===================================================================
  package org.jboss.seam.example.seamdiscs.test;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import javax.faces.model.DataModel;
  
  import org.apache.myfaces.trinidad.model.CollectionModel;
  import org.apache.myfaces.trinidad.model.SortCriterion;
  import org.jboss.seam.example.seamdiscs.model.Artist;
  import org.jboss.seam.example.seamdiscs.model.Band;
  import org.jboss.seam.mock.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  public class DisplayArtistTest extends DBUnitSeamTest
  {
      
      @Override
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/example/seamdiscs/test/BaseData.xml")
          );
      }
  
      @Test
      public void testDisplayArtists() throws Exception
      {
          new FacesRequest("/artists.xhtml")
          {
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  Object artists = getValue("#{artists.dataModel}");
                  assert artists instanceof DataModel;
                  DataModel artistsDataModel = (DataModel) artists;
                  
                  // Check for the correct number of results
                  assert artistsDataModel.getRowCount() == 6;
                  
                  // Check for correct ordering
                  assertArtist(artistsDataModel, 0, "Ry Cooder");
                  assertArtist(artistsDataModel, 1, "Richard Thompson");
                  assertArtist(artistsDataModel, 2, "Pink Floyd");
                  assertArtist(artistsDataModel, 3, "Led Zepplin");
                  assertArtist(artistsDataModel, 4, "Fairport Convention");
                  assertArtist(artistsDataModel, 5, "Bob Dylan");
              }
              
          }.run();
      }
      
      @Test
      public void testSeamCollectionModel() throws Exception
      {
          new FacesRequest("/artists.xhtml")
          {
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  Object artists = getValue("#{artists.dataModel}");
                  assert artists instanceof CollectionModel;
                  CollectionModel collectionModel = (CollectionModel) artists;
                  
                  // Reorder the list               
                  List<SortCriterion> criteria = new ArrayList<SortCriterion>();
                  criteria.add(new SortCriterion("artist.name", true));
                  collectionModel.setSortCriteria(criteria);
                  
                  // Check for correct ordering
                  assertArtist(collectionModel, 5, "Ry Cooder");
                  assertArtist(collectionModel, 4, "Richard Thompson");
                  assertArtist(collectionModel, 3, "Pink Floyd");
                  assertArtist(collectionModel, 2, "Led Zepplin");
                  assertArtist(collectionModel, 1, "Fairport Convention");
                  assertArtist(collectionModel, 0, "Bob Dylan");
              }
              
          }.run();
      }
      
      @Test
      public void testDisplayArtist() throws Exception
      {
          // TODO Test navigation, but need a MockNavigationHandler
          new NonFacesRequest("/artists.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("actionOutcome", "artist");
                  setParameter("artistId", "1");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert ((Integer) 1).equals(getValue("#{artistHome.id}"));
                  Object object = null;
                  object = getValue("#{artist}");
                  assert object instanceof Band;
                  Band artist1 = (Band) object;
                  assert "Pink Floyd".equals(artist1.getName());
                  assert artist1.getBandMembers().size() == 3;
              }
          }.run();
      }
      
      
      
      private void assertArtist(DataModel dataModel, int row, String name)
      {
          dataModel.setRowIndex(row);
          Object rowData = dataModel.getRowData();
          assert rowData instanceof Artist;
          Artist artist = (Artist) rowData;
          assert name.equals(artist.getName());
      }
      
  }
  
  
  
  1.1      date: 2007/10/08 11:48:37;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/EditDiscTest.java
  
  Index: EditDiscTest.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.example.seamdiscs.test;
  
  import javax.el.PropertyNotFoundException;
  import javax.faces.model.DataModel;
  
  import static org.jboss.seam.example.seamdiscs.test.TestStrings.*;
  
  import org.jboss.seam.example.seamdiscs.model.Disc;
  import org.jboss.seam.mock.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  /**
   * @author Pete Muir
   *
   */
  public class EditDiscTest extends DBUnitSeamTest{
      
      @Override
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/example/seamdiscs/test/BaseData.xml")
          );
      }
      
      @Test
      public void testEditDisc() throws Exception
      {
          final String cid = new FacesRequest("/disc.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("discId", "4");
                  setParameter("conversationPropagation", "join");
              }
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", USERNAME);
                  setValue("#{identity.password}", PASSWORD);
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert (Boolean) getValue("#{identity.loggedIn}");
                  assert ((Integer) 4).equals(getValue("#{discHome.id}"));
                  assert DISC4_NAME.equals(getValue("#{disc.name}"));
                  assert getValue("#{disc.description}") == null;
                  assert isLongRunningConversation();
                  assert (Boolean) getValue("#{discHome.managed}");
                  
              }
          }.run();
          
          new FacesRequest("/disc.xhtml", cid)
          {      
              
              @Override
              protected void updateModelValues() throws Exception 
              {
                  setValue("#{disc.description}", DISC4_NEW_DESCRIPTION);
                  assert isLongRunningConversation();
                  assert cid.equals(getConversationId());
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert "updated".equals(invokeAction("#{discHome.update}"));
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert DISC4_NEW_DESCRIPTION.equals(getValue("#{disc.description"));
                  assert isLongRunningConversation();
              }
              
          }.run();
      }
      
      @Test
      public void testAddDisc() throws Exception
      {
          final String cid = new FacesRequest("/disc.xhtml")
          {
              @Override
              protected void beforeRequest() 
              {
                  setParameter("conversationPropagation", "join");
              }
              
              @Override
              protected void updateModelValues() throws Exception {
                  setValue("#{identity.username}", USERNAME);
                  setValue("#{identity.password}", PASSWORD);
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  invokeAction("#{identity.login}");
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert (Boolean) getValue("#{identity.loggedIn}");
                  assert null == getValue("#{discHome.id}");
                  assert null == getValue("#{disc.name}");
                  assert isLongRunningConversation();
                  assert (!(Boolean) getValue("#{discHome.managed}"));
              }
          }.run();
          
          new FacesRequest("/disc.xhtml", cid)
          {      
              
              @Override
              protected void updateModelValues() throws Exception 
              {
                  setValue("#{disc.name}", NEW_DISC_NAME);
                  assert isLongRunningConversation();
              }
              
              @Override
              protected void invokeApplication() throws Exception 
              {
                  assert "persisted".equals(invokeAction("#{discHome.persist}"));
              }
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert NEW_DISC_NAME.equals(getValue("#{disc.name}"));
              }
              
          }.run();
          
          new FacesRequest("/discs.xhtml", cid)
          {
              
              @Override
              protected void renderResponse() throws Exception 
              {
                  assert new Long("7").equals(getValue("#{discs.resultCount}"));
                  assertDisc((DataModel) getValue("#{discs.dataModel}"), 4, NEW_DISC_NAME);
                  assertDisc((DataModel) getValue("#{discs.dataModel}"), 5, DISC4_NAME);
              }
              
          }.run();        
      }
      
      private void assertDisc(DataModel dataModel, int row, String discName)
      {
          dataModel.setRowIndex(row);
          Object rowData = dataModel.getRowData();
          assert rowData instanceof Disc;
          Disc disc = (Disc) rowData;
          assert discName.equals(disc.getName());
      }
      
  }
  
  
  



More information about the jboss-cvs-commits mailing list