/*
* FundraisingControllerTest.java
* JUnit based test
*
* Created on 29 September 2007, 09:25
*/
package org.spw.controller;
import java.math.BigDecimal;
import java.math.BigInteger;
import junit.framework.*;
import java.util.List;
import javax.persistence.EntityExistsException;
import org.spw.model.Fundraising;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.spw.model.FundraisingPlan;
import java.util.ArrayList;
/**
*
* @author PSe
*/
public class FundraisingControllerTest extends TestCase {
public static final int TEST_YEAR = 1900;
public FundraisingControllerTest(String testName) {
super(testName);
}
protected void setUp() throws Exception {
FundraisingController ctrl = new FundraisingController();
Fundraising fr = new Fundraising();
fr.setYearFunding(TEST_YEAR);
fr.setTarget(new BigDecimal(3600));
ctrl.create(fr);
}
protected void tearDown() throws Exception {
FundraisingController ctrl = new FundraisingController();
Fundraising fr = ctrl.read(TEST_YEAR);
if (fr != null) ctrl.delete(fr);
fr = ctrl.read(TEST_YEAR+1);
if (fr != null) ctrl.delete(fr);
}
/**
* Test of getFundraisings method, of class org.spw.controller.FundraisingController.
*/
public void testGetFundraisings() {
System.out.println("getFundraisings");
FundraisingController instance = new FundraisingController();
List<Fundraising> result = instance.getFundraisings();
assertTrue(result.size() > 0);
}
/**
* Test of create method, of class org.spw.controller.FundraisingController.
*/
public void testCreate() {
System.out.println("create");
Fundraising object = new Fundraising();
object.setYearFunding(TEST_YEAR+1);
object.setTarget(new BigDecimal(3600));
FundraisingController instance = new FundraisingController();
instance.create(object);
// test double
try {
object = new Fundraising();
object.setYearFunding(TEST_YEAR+1);
object.setTarget(new BigDecimal(3600));
instance.create(object);
fail("double must throw an exception");
} catch (EntityExistsException eee) {
//OK
}
}
/**
* Test of read method, of class org.spw.controller.FundraisingController.
*/
public void testRead() {
System.out.println("read");
FundraisingController instance = new FundraisingController();
Fundraising result = instance.read(TEST_YEAR);
assertEquals((int)TEST_YEAR, (int)result.getYearFunding());
assertEquals(new BigDecimal(3600), result.getTarget());
}
/**
* Test of update method, of class org.spw.controller.FundraisingController.
*/
public void testUpdate() {
System.out.println("update");
FundraisingController instance = new FundraisingController();
Fundraising fr = instance.read(TEST_YEAR);
BigDecimal newTarget = new BigDecimal(new BigInteger("360002"), 2);
fr.setTarget(newTarget);
Fundraising result = instance.update(fr);
assertEquals(newTarget, result.getTarget());
fr = instance.read(TEST_YEAR);
assertEquals(newTarget, fr.getTarget());
}
/**
* Test of delete method, of class org.spw.controller.FundraisingController.
*/
public void testDelete() {
System.out.println("delete");
FundraisingController instance = new FundraisingController();
Fundraising object = instance.read(TEST_YEAR);
instance.delete(object);
object = instance.read(TEST_YEAR);
assertNull(object);
int year = 1900;
int month = 1;
FundraisingPlan[] plan = new FundraisingPlan[2];
FundraisingPlan p1 = new FundraisingPlan();
p1.setMonthSelected(month);
p1.setMonthFunding(1);
p1.setAmount(new BigDecimal(100));
plan[0] = p1;
FundraisingPlan p2 = new FundraisingPlan();
p2.setMonthSelected(month);
p2.setMonthFunding(2);
p2.setAmount(new BigDecimal(3500));
plan[1] = p2;
instance = new FundraisingController();
instance.addFundraisingsPlan(year, month, plan);
}
/**
* Test of addFundraisingsPlan method, of class org.spw.controller.FundraisingController.
*/
public void testAddFundraisingsPlan() {
System.out.println("addFundraisingsPlan");
int year = 1900;
int month = 1;
FundraisingPlan[] plan = new FundraisingPlan[2];
FundraisingPlan p1 = new FundraisingPlan();
p1.setMonthSelected(month);
p1.setMonthFunding(1);
p1.setAmount(new BigDecimal(100));
plan[0] = p1;
FundraisingPlan p2 = new FundraisingPlan();
p2.setMonthSelected(month);
p2.setMonthFunding(2);
p2.setAmount(new BigDecimal(3500));
plan[1] = p2;
FundraisingController instance = new FundraisingController();
instance.addFundraisingsPlan(year, month, plan);
Fundraising result = instance.read(year);
assertEquals(2, result.getFundraisingPlans().size());
for (FundraisingPlan item: result.getFundraisingPlans()) {
assertEquals(month, item.getMonthSelected());
assertTrue(item.getMonthFunding() > 0);
assertTrue(item.getAmount().compareTo(new BigDecimal(99.99)) > 0);
}
plan = new FundraisingPlan[3];
plan[0] = result.getFundraisingPlans().get(0);
p2 = new FundraisingPlan();
p2.setMonthSelected(month);
p2.setMonthFunding(2);
p2.setAmount(new BigDecimal(2500));
plan[1] = p2;
FundraisingPlan p3 = new FundraisingPlan();
p3.setMonthSelected(month);
p3.setMonthFunding(2);
p3.setAmount(new BigDecimal(1500));
plan[2] = p3;
instance.addFundraisingsPlan(year, month, plan);
result = instance.read(year);
assertEquals(3, result.getFundraisingPlans().size());
for (FundraisingPlan item: result.getFundraisingPlans()) {
assertEquals(month, item.getMonthSelected());
assertTrue(item.getMonthFunding() > 0);
assertTrue(item.getAmount().compareTo(new BigDecimal(99.99)) > 0);
}
}
/**
* Test of getFundraisingsPlan method, of class org.spw.controller.FundraisingController.
*/
public void testGetFundraisingsPlan() {
System.out.println("getFundraisingsPlan");
int year = 1900;
int month = 2;
FundraisingController instance = new FundraisingController();
FundraisingPlan[] plan = new FundraisingPlan[2];
FundraisingPlan p1 = new FundraisingPlan();
p1.setMonthSelected(month);
p1.setMonthFunding(1);
p1.setAmount(new BigDecimal(100));
plan[0] = p1;
FundraisingPlan p2 = new FundraisingPlan();
p2.setMonthSelected(month);
p2.setMonthFunding(2);
p2.setAmount(new BigDecimal(3500));
plan[1] = p2;
instance.addFundraisingsPlan(year, month, plan);
boolean found[] = new boolean[12];
FundraisingPlan[] result = instance.getFundraisingsPlan(year, month);
for (int i = 1; i < plan.length; i++) {
assertNotNull(plan[i]);
assertEquals(month, plan[i].getMonthSelected());
assertEquals(year, (int)plan[i].getFundraising().getYearFunding());
found[plan[i].getMonthFunding()-1] = true;
}
for (int i = 1; i < plan.length; i++) {
assertTrue(found[i]);
}
}
}