Package org.jboss.seam.example.seampay.test

Source Code of org.jboss.seam.example.seampay.test.PaymentProcessorTest

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;
    }
   
   
}
TOP

Related Classes of org.jboss.seam.example.seampay.test.PaymentProcessorTest

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.