package com.acme.ejb.calc;
import java.math.BigDecimal;
import javax.ejb.EJB;
import junit.framework.Assert;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
public class MortgageCalculatorEnvEntryTestCase {
@Deployment
public static Archive<?> createDeployment() {
// we have to create a war because ejb-jar.xml must be put in WEB-INF
// explicit archive name required until ARQ-77 is resolved
WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
.addClasses(MortgageCalculator.class, MortgageCalculatorBean.class)
.addAsWebInfResource("interest-rate-ejb-jar.xml", "ejb-jar.xml");
JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar")
.addClasses(MortgageCalculator.class, MortgageCalculatorBean.class)
.addAsManifestResource("interest-rate-ejb-jar.xml", "ejb-jar.xml");
// jar is need to pass test in openejb 4
return war;
}
@EJB
MortgageCalculator calculator;
@Test
public void shouldCalculateMonthlyPaymentAccuratelyWithBuiltInRate() {
Assert.assertEquals("Interest rate should be set by ejb-jar.xml", 5.5, calculator.getCurrentInterestRate());
double principal = 750000;
int term = 30;
BigDecimal expected = new BigDecimal(Double.toString(4258.42));
BigDecimal actual = calculator.calculateMonthlyPayment(principal, term);
Assert.assertEquals("A banking error has been detected!", expected, actual);
}
}