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

Peter Muir peter at bleepbleep.org.uk
Mon Oct 8 06:34:09 EDT 2007


  User: pmuir   
  Date: 07/10/08 06:34:09

  Added:       examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test    
                        testng.xml BaseData.xml EditTest.java
                        DisplayTest.java
  Log:
  First pass at tests for SeamDiscs
  
  Revision  Changes    Path
  1.1      date: 2007/10/08 10:34:08;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/testng.xml
  
  Index: testng.xml
  ===================================================================
  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  <suite name="SeamDiscs" verbose="2" parallel="false">
      <test name="SeamDiscs: Functional 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" />
          </classes>
      </test>
  </suite>
  
  
  
  1.1      date: 2007/10/08 10:34:09;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/BaseData.xml
  
  Index: BaseData.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <dataset>
     
     <ARTIST 
        id="1"
        dtype="Band"
        name="Pink Floyd" />
        
     <ARTIST 
        id="2"
        dtype="Band"
        name="Fairport Convention" />
        
     <ARTIST 
        id="3"
        dtype="Artist"
        name="Bob Dylan" />
        
     <ARTIST 
        id="4"
        dtype="Band"
        name="Led Zepplin" />
     
     <ARTIST 
        id="5"
        dtype="Artist"
        name="Ry Cooder" />
        
     <ARTIST 
        id="6"
        dtype="Artist"
        name="Richard Thompson" />
     
     <DISC
        id="1"
        name="Dark Side of the Moon"
        artist_id="1" />
     
     <DISC
        id="2"
        name="Liege and Lief"
        artist_id="2" />
        
     <DISC
        id="3"
        name="The Wall"
        artist_id="1" />
     
     <DISC
        id="4"
        name="The Freewheein' Bob Dylan"
        artist_id="3" />
        
     <DISC
        id="5"
        name="Blood on the Tracks"
        artist_id="3" />
        
     <DISC
        id="6"
        name="Chavez Ravine"
        artist_id="5" />
        
     <BANDMEMBER
        id="1"
        name="Syd Barett"
        band_id="1" />
        
     <BANDMEMBER
        id="2"
        name="David Gilmour"
        band_id="1" />
        
     <BANDMEMBER
        id="3"
        name="Roger Waters"
        band_id="1" />
        
     <USER
        id="1"
        username="administrator"
        password="administrator" />
      
  </dataset>
  
  
  1.1      date: 2007/10/08 10:34:09;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/EditTest.java
  
  Index: EditTest.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.example.seamdiscs.test;
  
  import javax.el.PropertyNotFoundException;
  
  import org.jboss.seam.framework.EntityHome;
  import org.jboss.seam.framework.Home;
  import org.jboss.seam.mock.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  /**
   * @author Pete Muir
   *
   */
  public class EditTest 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 10:34:09;  author: pmuir;  state: Exp;jboss-seam/examples/seamdiscs/src/org/jboss/seam/example/seamdiscs/test/DisplayTest.java
  
  Index: DisplayTest.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 DisplayTest 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());
      }
      
  }
  
  
  



More information about the jboss-cvs-commits mailing list