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

Norman Richards norman.richards at jboss.com
Tue Oct 9 21:08:21 EDT 2007


  User: nrichards
  Date: 07/10/09 21:08:21

  Added:       examples/seampay/src/org/jboss/seam/example/seampay/test   
                        AccountTest.java PaymentProcessorTest.java
                        testng.xml
  Log:
  JBSEAM-2067
  
  Revision  Changes    Path
  1.1      date: 2007/10/10 01:08:21;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/test/AccountTest.java
  
  Index: AccountTest.java
  ===================================================================
  package org.jboss.seam.example.seampay.test;
  
  import java.math.BigDecimal;
  import java.util.List;
  
  import org.jboss.seam.example.seampay.Account;
  import org.jboss.seam.example.seampay.Payment;
  import org.jboss.seam.example.seampay.Payment.Frequency;
  import org.jboss.seam.mock.SeamTest;
  import org.testng.annotations.Test;
  
  /**
   *  embedded ejb3 doesn't support timer service, so we are fairly limited on what we can test.
   */
  public class AccountTest 
      extends SeamTest 
  {
      @Test
      public void listAccounts() throws Exception {
          String id = new FacesRequest("/search.xhtml") {
              
              @Override
              @SuppressWarnings("unchecked")
              protected void renderResponse() throws Exception {
                  List<Account> accounts = (List<Account>) getValue("#{accounts.resultList}");
                  
                  assert accounts.size() == 5;                
                  // check ASC?
              }          
          }.run(); 
      }
      
      @Test
      public void selectAccount() throws Exception {        
          String id = new FacesRequest("/search.xhtml") {        
              @Override
              @SuppressWarnings("unchecked")
              protected void renderResponse() throws Exception {           
                  assert !((Boolean)getValue("#{accountHome.idDefined}"));
              }          
          }.run();
          
          new FacesRequest("/search.xhtml", id) {
              @Override
              protected void beforeRequest() {
                  setParameter("accountId", "1");
              }
  
              @Override
              protected void renderResponse() throws Exception {
                  assert ((Boolean)getValue("#{accountHome.idDefined}"));
                  
                  Account account = (Account) getValue("#{selectedAccount}");
                  assert account !=null;
                  assert account.getId() == 1;
                  assert account.getPayments().size() == 0;
                 
                  Payment payment = (Payment) getValue("#{newPayment}");
                  assert payment.getPayee().equals("Somebody");
                  assert payment.getAccount() != null;
                  assert payment.getAccount().getId() == 1;
                  
              }            
          }.run();
          
          
          new FacesRequest("/search.xhtml", id) {
              @Override
              protected void beforeRequest() {
                  setParameter("accountId", "1");
              }
              
              @Override
              protected void applyRequestValues() throws Exception {
                  setValue("#{newPayment.payee}", "IRS"); 
                  setValue("#{newPayment.amount}", new BigDecimal("100.00"));
                  setValue("#{newPayment.paymentFrequency}", Frequency.ONCE);
              }
  
              @Override
              protected void invokeApplication() throws Exception {
                  invokeMethod("#{paymentHome.saveAndSchedule}");
              }
  
              @Override
              protected void renderResponse() throws Exception {
                  assert ((Boolean)getValue("#{accountHome.idDefined}"));                
                  Account account = (Account) getValue("#{selectedAccount}");                
                  assert account !=null;
                  assert account.getId() == 1;
                  assert account.getPayments().size() == 1;               
                  
                  Payment payment = (Payment) getValue("#{newPayment}");
                  assert payment.getPayee().equals("IRS");
                  assert payment.getAmount().equals(new BigDecimal("100.00"));
                  assert payment.getAccount() != null;
                  assert payment.getAccount().getId() == 1;
              }            
          }.run();
          
          
          // test that the payment is around
          new FacesRequest("/search.xhtml") {
              @Override
              protected void beforeRequest() {
                  setParameter("accountId", "1");
              }
              
              @Override
              protected void renderResponse() throws Exception {
                  assert ((Boolean)getValue("#{accountHome.idDefined}"));                
                  Account account = (Account) getValue("#{selectedAccount}");                
                  assert account !=null;
                  assert account.getId() == 1;
                  assert account.getPayments().size() == 1;        
              }            
          }.run();
      }
      
  }
  
  
  
  1.1      date: 2007/10/10 01:08:21;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/test/PaymentProcessorTest.java
  
  Index: PaymentProcessorTest.java
  ===================================================================
  package org.jboss.seam.example.seampay.test;
  
  import java.math.BigDecimal;
  import java.util.Date;
  
  import org.jboss.seam.example.seampay.Account;
  import org.jboss.seam.example.seampay.Payment;
  import org.jboss.seam.example.seampay.PaymentProcessor;
  import org.jboss.seam.example.seampay.Payment.Frequency;
  import org.jboss.seam.mock.SeamTest;
  import org.testng.annotations.Test;
  
  public class PaymentProcessorTest 
      extends SeamTest
  {
      static final String     ACCOUNT_NUMBER = "X12345";
      static final BigDecimal INITIAL_BALANCE = new BigDecimal("1000");
  
      @Test 
      public void testInactive() {
          PaymentProcessor processor = new PaymentProcessor();
          
          Payment payment = createTestPayment(new BigDecimal("100"), Frequency.ONCE);
          payment.setActive(false);                
                  
          assert payment.getAccount().getBalance().equals(INITIAL_BALANCE);        
                 
          processor.processPayment(payment);
          
          assert payment.getAccount().getBalance().equals(INITIAL_BALANCE);
          assert payment.getLastPaid() == null;
      }
      
      @Test 
      public void testPayOnce() {
          PaymentProcessor processor = new PaymentProcessor();
          
          Payment payment = createTestPayment(new BigDecimal("100"), Frequency.ONCE);
  
          assert payment.getAccount().getBalance().equals(INITIAL_BALANCE); 
  
          processor.processPayment(payment);
                 
          assert payment.getAccount().getBalance().equals(new BigDecimal("900"));
          assert !payment.getActive();
          assert payment.getLastPaid() != null;
      }
      
      @Test 
      public void testPayMultiple() {
          PaymentProcessor processor = new PaymentProcessor();
          
          Payment payment = createTestPayment(new BigDecimal("100"), Frequency.WEEKLY);
  
          assert payment.getAccount().getBalance().equals(INITIAL_BALANCE); 
  
          processor.processPayment(payment);
                 
          assert payment.getAccount().getBalance().equals(new BigDecimal("900"));
          assert payment.getActive();
          assert payment.getLastPaid() != null;
          
          Date firstPayment = payment.getLastPaid();
          
          pause(); // just need to make sure we are some small time in the future
          
          processor.processPayment(payment);
       
          assert payment.getAccount().getBalance().equals(new BigDecimal("800"));
          assert payment.getActive();
          assert payment.getLastPaid().after(firstPayment);
      }
    
      
      private void pause() {
          try {
              Thread.sleep(1);
          } catch (InterruptedException e) {
              
          }                
      }
  
      protected Payment createTestPayment(BigDecimal amount, Frequency frequency) {
          Account account = new Account();
          account.setAccountNumber(ACCOUNT_NUMBER);
          setField(account, "balance", INITIAL_BALANCE);
          
          Payment payment = new Payment();
          payment.setAccount(account);
          payment.setAmount(amount);
          payment.setPaymentFrequency(frequency);        
          
          return payment;
      }
      
      
  }
  
  
  
  1.1      date: 2007/10/10 01:08:21;  author: nrichards;  state: Exp;jboss-seam/examples/seampay/src/org/jboss/seam/example/seampay/test/testng.xml
  
  Index: testng.xml
  ===================================================================
  <!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
  
  <suite name="seampay" verbose="2" parallel="false">
  	<test name="seampay">
  		<classes>
  			<class
  				name="org.jboss.seam.example.seampay.test.PaymentProcessorTest" />
  			<class
  				name="org.jboss.seam.example.seampay.test.AccountTest" />
  		</classes>
  	</test>
  </suite>
  
  
  



More information about the jboss-cvs-commits mailing list