001: /*
002: * Copyright 2006-2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.module.kra.web.struts.form;
017:
018: import java.util.ArrayList;
019: import java.util.List;
020:
021: import org.kuali.core.util.KualiInteger;
022: import org.kuali.kfs.context.KualiTestBase;
023: import org.kuali.module.kra.bo.BudgetPeriodTest;
024: import org.kuali.module.kra.budget.bo.BudgetPeriod;
025: import org.kuali.module.kra.budget.bo.BudgetTask;
026: import org.kuali.module.kra.budget.bo.BudgetTaskPeriodIndirectCost;
027: import org.kuali.module.kra.budget.web.struts.form.BudgetIndirectCostFormHelper;
028: import org.kuali.test.ConfigureContext;
029:
030: @ConfigureContext
031: public class BudgetIndirectCostFormHelperTest extends KualiTestBase {
032:
033: public void testInitializeTotals() {
034:
035: BudgetTask task1 = new BudgetTask();
036: task1.setDocumentNumber("1234");
037: task1.setBudgetTaskSequenceNumber(new Integer(0));
038:
039: BudgetTask task2 = new BudgetTask();
040: task2.setDocumentNumber("1234");
041: task2.setBudgetTaskSequenceNumber(new Integer(1));
042:
043: List tasks = new ArrayList();
044: tasks.add(task1);
045: tasks.add(task2);
046:
047: List periods = BudgetPeriodTest.createBudgetPeriods(2);
048: for (int i = 0; i < periods.size(); i++) {
049: BudgetPeriod period = (BudgetPeriod) periods.get(i);
050: period.setDocumentNumber("1234");
051: period.setBudgetPeriodSequenceNumber(i);
052: }
053:
054: BudgetIndirectCostFormHelper formHelper = new BudgetIndirectCostFormHelper();
055: formHelper.initializeTotals(tasks, periods);
056:
057: List taskTotals = formHelper.getTaskTotals();
058: List periodTotals = formHelper.getPeriodTotals();
059:
060: assertEquals(periodTotals.size(), 2);
061: assertEquals(taskTotals.size(), 2);
062:
063: BudgetTaskPeriodIndirectCost idc1 = (BudgetTaskPeriodIndirectCost) taskTotals
064: .get(0);
065: assertEquals(idc1.getBudgetTaskSequenceNumber(), new Integer(0));
066: assertEquals(idc1.getTask(), task1);
067:
068: BudgetTaskPeriodIndirectCost idc2 = (BudgetTaskPeriodIndirectCost) taskTotals
069: .get(1);
070: assertEquals(idc2.getBudgetTaskSequenceNumber(), new Integer(1));
071: assertEquals(idc2.getTask(), task2);
072:
073: BudgetTaskPeriodIndirectCost idc3 = (BudgetTaskPeriodIndirectCost) periodTotals
074: .get(0);
075: assertEquals(idc3.getBudgetPeriodSequenceNumber(), new Integer(
076: 0));
077: assertEquals(idc3.getPeriod(), (BudgetPeriod) periods.get(0));
078:
079: BudgetTaskPeriodIndirectCost idc4 = (BudgetTaskPeriodIndirectCost) periodTotals
080: .get(1);
081: assertEquals(idc4.getBudgetPeriodSequenceNumber(), new Integer(
082: 1));
083: assertEquals(idc4.getPeriod(), (BudgetPeriod) periods.get(1));
084: }
085:
086: public void testUpdateTotals() {
087:
088: BudgetTaskPeriodIndirectCost idcTask0Exist = new BudgetTaskPeriodIndirectCost();
089: idcTask0Exist.setBudgetTaskSequenceNumber(new Integer(0));
090: idcTask0Exist.setTotalDirectCost(new KualiInteger(1500));
091: idcTask0Exist.setBaseCost(new KualiInteger(1000));
092: idcTask0Exist.setCalculatedIndirectCost(new KualiInteger(100));
093: idcTask0Exist.setCostShareBaseCost(new KualiInteger(500));
094: idcTask0Exist
095: .setCostShareCalculatedIndirectCost(new KualiInteger(
096: 300));
097: idcTask0Exist
098: .setCostShareUnrecoveredIndirectCost(new KualiInteger(
099: 200));
100:
101: List taskTotalsList = new ArrayList();
102: taskTotalsList.add(idcTask0Exist);
103:
104: BudgetIndirectCostFormHelper formHelper = new BudgetIndirectCostFormHelper();
105: formHelper.setTaskTotals(taskTotalsList);
106:
107: BudgetTaskPeriodIndirectCost idcTask0Update = new BudgetTaskPeriodIndirectCost();
108: idcTask0Update.setBudgetTaskSequenceNumber(new Integer(0));
109: idcTask0Update.setTotalDirectCost(new KualiInteger(500));
110: idcTask0Update.setBaseCost(new KualiInteger(400));
111: idcTask0Update.setCalculatedIndirectCost(new KualiInteger(300));
112: idcTask0Update.setCostShareBaseCost(new KualiInteger(200));
113: idcTask0Update
114: .setCostShareCalculatedIndirectCost(new KualiInteger(
115: 100));
116: idcTask0Update
117: .setCostShareUnrecoveredIndirectCost(new KualiInteger(
118: 50));
119:
120: BudgetTaskPeriodIndirectCost idcPeriod0Exist = new BudgetTaskPeriodIndirectCost();
121: idcPeriod0Exist.setBudgetPeriodSequenceNumber(new Integer(0));
122: idcPeriod0Exist.setTotalDirectCost(new KualiInteger(1500));
123: idcPeriod0Exist.setBaseCost(new KualiInteger(1000));
124: idcPeriod0Exist
125: .setCalculatedIndirectCost(new KualiInteger(100));
126: idcPeriod0Exist.setCostShareBaseCost(new KualiInteger(500));
127: idcPeriod0Exist
128: .setCostShareCalculatedIndirectCost(new KualiInteger(
129: 300));
130: idcPeriod0Exist
131: .setCostShareUnrecoveredIndirectCost(new KualiInteger(
132: 200));
133:
134: List periodTotalsList = new ArrayList();
135: periodTotalsList.add(idcPeriod0Exist);
136:
137: formHelper.setPeriodTotals(periodTotalsList);
138:
139: BudgetTaskPeriodIndirectCost idcPeriod0Update = new BudgetTaskPeriodIndirectCost();
140: idcPeriod0Update.setBudgetPeriodSequenceNumber(new Integer(0));
141: idcPeriod0Update.setTotalDirectCost(new KualiInteger(500));
142: idcPeriod0Update.setBaseCost(new KualiInteger(400));
143: idcPeriod0Update
144: .setCalculatedIndirectCost(new KualiInteger(300));
145: idcPeriod0Update.setCostShareBaseCost(new KualiInteger(200));
146: idcPeriod0Update
147: .setCostShareCalculatedIndirectCost(new KualiInteger(
148: 100));
149: idcPeriod0Update
150: .setCostShareUnrecoveredIndirectCost(new KualiInteger(
151: 50));
152:
153: List idcItems = new ArrayList();
154: idcItems.add(idcTask0Update);
155: idcItems.add(idcPeriod0Update);
156: formHelper.updateTotals(idcItems);
157:
158: BudgetTaskPeriodIndirectCost idcTask0Merge = (BudgetTaskPeriodIndirectCost) formHelper
159: .getTaskTotals().get(0);
160: assertEquals(idcTask0Merge.getTotalDirectCost(),
161: new KualiInteger(2000));
162: assertEquals(idcTask0Merge.getBaseCost(),
163: new KualiInteger(1400));
164: assertEquals(idcTask0Merge.getCalculatedIndirectCost(),
165: new KualiInteger(400));
166: assertEquals(idcTask0Merge.getCostShareBaseCost(),
167: new KualiInteger(700));
168: assertEquals(
169: idcTask0Merge.getCostShareCalculatedIndirectCost(),
170: new KualiInteger(400));
171: assertEquals(idcTask0Merge
172: .getCostShareUnrecoveredIndirectCost(),
173: new KualiInteger(250));
174:
175: BudgetTaskPeriodIndirectCost idcPeriod0Merge = (BudgetTaskPeriodIndirectCost) formHelper
176: .getTaskTotals().get(0);
177: assertEquals(idcPeriod0Merge.getTotalDirectCost(),
178: new KualiInteger(2000));
179: assertEquals(idcPeriod0Merge.getBaseCost(), new KualiInteger(
180: 1400));
181: assertEquals(idcPeriod0Merge.getCalculatedIndirectCost(),
182: new KualiInteger(400));
183: assertEquals(idcPeriod0Merge.getCostShareBaseCost(),
184: new KualiInteger(700));
185: assertEquals(idcPeriod0Merge
186: .getCostShareCalculatedIndirectCost(),
187: new KualiInteger(400));
188: assertEquals(idcPeriod0Merge
189: .getCostShareUnrecoveredIndirectCost(),
190: new KualiInteger(250));
191:
192: BudgetTaskPeriodIndirectCost subTotalMerge = formHelper
193: .getPeriodSubTotal();
194: assertEquals(subTotalMerge.getTotalDirectCost(),
195: new KualiInteger(1000));
196: assertEquals(subTotalMerge.getBaseCost(), new KualiInteger(800));
197: assertEquals(subTotalMerge.getCalculatedIndirectCost(),
198: new KualiInteger(600));
199: assertEquals(subTotalMerge.getCostShareBaseCost(),
200: new KualiInteger(400));
201: assertEquals(
202: subTotalMerge.getCostShareCalculatedIndirectCost(),
203: new KualiInteger(200));
204: assertEquals(subTotalMerge
205: .getCostShareUnrecoveredIndirectCost(),
206: new KualiInteger(100));
207: }
208: }
|