1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.hr.lm.balancetransfer;
17
18 import com.gargoylesoftware.htmlunit.html.HtmlPage;
19 import junit.framework.Assert;
20
21 import org.apache.log4j.Logger;
22 import org.joda.time.DateTime;
23 import org.junit.Test;
24 import org.kuali.hr.lm.leave.web.LeaveCalendarWSForm;
25 import org.kuali.hr.lm.leaveCalendar.LeaveCalendarWebTestBase;
26 import org.kuali.hr.lm.leaveSummary.LeaveSummary;
27 import org.kuali.hr.lm.leaveSummary.LeaveSummaryRow;
28 import org.kuali.hr.lm.leavecalendar.LeaveCalendarDocument;
29 import org.kuali.hr.lm.leavecalendar.web.LeaveCalendarSubmitForm;
30 import org.kuali.hr.lm.util.LeaveCalendarTestUtils;
31 import org.kuali.hr.time.calendar.CalendarEntries;
32 import org.kuali.hr.time.service.base.TkServiceLocator;
33 import org.kuali.hr.time.test.HtmlUnitUtil;
34 import org.kuali.hr.time.test.TkTestConstants;
35 import org.kuali.hr.time.util.TKUtils;
36 import org.kuali.hr.time.util.TkConstants;
37
38 import java.math.BigDecimal;
39 import java.sql.Date;
40 import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
41 import com.gargoylesoftware.htmlunit.WebClient;
42 import com.gargoylesoftware.htmlunit.html.HtmlPage;
43 import sun.util.LocaleServiceProviderPool;
44
45 import static org.junit.Assert.assertTrue;
46
47
48 public class BalanceTransferTest extends LeaveCalendarWebTestBase {
49 private static final Logger LOG = Logger.getLogger(BalanceTransferTest.class);
50 public static final String USER_PRINCIPAL_ID = "admin";
51 private Date JAN_AS_OF_DATE = new Date((new DateTime(2010, 1, 1, 0, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis());
52 private BalanceTransfer balanceTransfer;
53
54 @Override
55 public void setUp() throws Exception {
56 super.setUp();
57 setBaseDetailURL(TkTestConstants.Urls.LEAVE_CALENDAR_SUBMIT_URL + "?documentId=");
58 balanceTransfer = new BalanceTransfer();
59 balanceTransfer.setTransferAmount(new BigDecimal(20));
60 balanceTransfer.setForfeitedAmount(new BigDecimal(0));
61 balanceTransfer.setAmountTransferred(new BigDecimal(10));
62 balanceTransfer.setAccrualCategoryRule("5000");
63 }
64
65 @Test
66 public void testTransferWithAccrualRule() throws Exception {
67 BalanceTransfer btd = new BalanceTransfer();
68
69 assertTrue("Dummy assertion",true);
70 }
71
72 @Test
73 public void testAdjustLowerTransferAmount() {
74 BigDecimal adjustedTransferAmount = new BigDecimal(10);
75 balanceTransfer = balanceTransfer.adjust(adjustedTransferAmount);
76
77 assertTrue("Transfer Amount not equals", balanceTransfer.getTransferAmount().compareTo(adjustedTransferAmount) == 0);
78 assertTrue("Forfeited amount not updated", balanceTransfer.getForfeitedAmount().compareTo(new BigDecimal(10)) == 0);
79 assertTrue(balanceTransfer.getAmountTransferred().compareTo(new BigDecimal(5)) == 0);
80 }
81
82 @Test
83 public void testAdjustLowerTransferAmountWithForfeiture() {
84 BigDecimal adjustedTransferAmount = new BigDecimal(10);
85 balanceTransfer.setForfeitedAmount(new BigDecimal(10));
86 balanceTransfer = balanceTransfer.adjust(adjustedTransferAmount);
87
88 assertTrue("Transfer Amount not equals", balanceTransfer.getTransferAmount().compareTo(adjustedTransferAmount) == 0);
89 assertTrue("Forfeited amount not updated", balanceTransfer.getForfeitedAmount().compareTo(new BigDecimal(20)) == 0);
90 assertTrue(balanceTransfer.getAmountTransferred().compareTo(new BigDecimal(5)) == 0);
91 }
92
93 @Test
94 public void testAdjustRaiseTransferAmount() {
95 BigDecimal adjustedTransferAmount = new BigDecimal(30);
96 balanceTransfer = balanceTransfer.adjust(adjustedTransferAmount);
97
98 assertTrue("Transfer Amount not equals", balanceTransfer.getTransferAmount().compareTo(adjustedTransferAmount) == 0);
99 assertTrue("Forfeited amount not updated", balanceTransfer.getForfeitedAmount().compareTo(BigDecimal.ZERO) == 0);
100 assertTrue(balanceTransfer.getAmountTransferred().compareTo(new BigDecimal(15)) == 0);
101 }
102
103 @Test
104 public void testAdjustRaiseTransferAmountWithForfeitureLessThanDifference() {
105 BigDecimal adjustedTransferAmount = new BigDecimal(40);
106 balanceTransfer.setForfeitedAmount(new BigDecimal(10));
107
108 balanceTransfer = balanceTransfer.adjust(adjustedTransferAmount);
109
110 assertTrue("Transfer Amount not equals", balanceTransfer.getTransferAmount().compareTo(adjustedTransferAmount) == 0);
111 assertTrue("Forfeited amount not updated", balanceTransfer.getForfeitedAmount().compareTo(BigDecimal.ZERO) == 0);
112 assertTrue(balanceTransfer.getAmountTransferred().compareTo(new BigDecimal(20)) == 0);
113 }
114
115 @Test
116 public void testAdjustRaiseTransferAmountWithForfeitureMoreThanDifference() {
117 BigDecimal adjustedTransferAmount = new BigDecimal(30);
118 balanceTransfer.setForfeitedAmount(new BigDecimal(15));
119 balanceTransfer = balanceTransfer.adjust(adjustedTransferAmount);
120
121 assertTrue("Transfer Amount not equals", balanceTransfer.getTransferAmount().compareTo(adjustedTransferAmount) == 0);
122 assertTrue("Forfeited amount not updated", balanceTransfer.getForfeitedAmount().compareTo(new BigDecimal(5)) == 0);
123 assertTrue(balanceTransfer.getAmountTransferred().compareTo(new BigDecimal(15)) == 0);
124 }
125
126
127
128
129
130
131
132
133 @Test
134 public void testSingleLeaveApproveBalanceTransfer() throws Exception {
135
136
137 LeaveSummary ls = new LeaveSummary();
138
139
140 Date startDate = new Date((new DateTime(2012, 1, 1, 0, 0, 0, 1, TKUtils.getSystemDateTimeZone())).getMillis());
141 Date asOfDate = new Date((new DateTime(2012, 11, 1, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis());
142 TkServiceLocator.getAccrualService().runAccrual(USER_PRINCIPAL_ID,startDate,asOfDate,false);
143 CalendarEntries pcd = TkServiceLocator.getCalendarService().getCurrentCalendarDatesForLeaveCalendar(USER_PRINCIPAL_ID, asOfDate);
144 Assert.assertNotNull("No CalendarEntries", pcd);
145
146
147 LeaveCalendarDocument tdoc = TkServiceLocator.getLeaveCalendarService().openLeaveCalendarDocument(USER_PRINCIPAL_ID, pcd);
148 String tdocId = tdoc.getDocumentId();
149
150
151
152
153 ls = TkServiceLocator.getLeaveSummaryService().getLeaveSummary(USER_PRINCIPAL_ID, pcd);
154 LeaveCalendarWSForm tdaf = LeaveCalendarTestUtils.buildLeaveCalendarFormForSubmission(tdoc, ls);
155 LeaveCalendarSubmitForm lcsf = new LeaveCalendarSubmitForm();
156 lcsf.setAction(TkConstants.DOCUMENT_ACTIONS.ROUTE);
157 lcsf.setDocumentId(tdaf.getDocumentId());
158 for(LeaveSummaryRow lsRow : ls.getLeaveSummaryRows()) {
159 LOG.info("Accrued balance : " + lsRow.getAccruedBalance());
160 }
161 HtmlPage page = LeaveCalendarTestUtils.submitLeaveCalendar2(getWebClient(), getLeaveCalendarUrl(tdocId), tdaf);
162
163
164 Assert.assertNotNull(page);
165 HtmlUnitUtil.createTempFile(page, "LeaveBlockPresent");
166
167
168 String pageAsText = page.asText();
169 LOG.info(pageAsText);
170
171
172
173
174
175
176
177
178
179
180
181 assertTrue("Dummy assertion 2", true);
182 }
183
184
185
186
187
188
189 @Test
190 public void testMultipleLeaveApproveBalanceTransfer() throws Exception {
191
192
193
194
195
196
197
198
199
200
201 assertTrue("Dummy assertion 3",true);
202 }
203
204
205
206
207
208 @Test
209 public void testNoEligibleAccrualCategorysForLeaveApproveBalanceTransfer() throws Exception {
210
211
212
213
214
215
216
217
218
219
220 assertTrue("Dummy assertion 4", true);
221 }
222
223
224
225
226
227 @Test
228 public void testLookupPage() throws Exception {
229 HtmlPage btLookup = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.BALANCE_TRANSFER_MAINT_URL);
230 btLookup = HtmlUnitUtil.clickInputContainingText(btLookup, "search");
231 LOG.info(btLookup.asXml());
232 Assert.assertTrue("Page contains test Balance Transfer", btLookup.asText().contains("fromAC"));
233 Assert.assertFalse("Page should not contain edit action", btLookup.asText().contains("edit"));
234 Assert.assertTrue("Page should contain view action", btLookup.asText().contains("view"));
235 }
236
237
238 }