package org.kuali.kfs.module.ar.businessobject;
import org.junit.Assert;import org.junit.Test;
import org.kuali.kfs.coa.service.AccountingPeriodService;import org.kuali.kfs.module.ar.ArConstants;
public class LetterOfCreditBillingPeriodTest extends BillingPeriodTest {
@Test
public void testDetermineBillingPeriodPriorTo_LOC_nullLastBilled_1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-20";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-04-19";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.LOC_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_LOC_nullLastBilled_2() {
String awardStartDate = "2014-08-01";
String currentDate = "2015-04-20";
String expectedBillingPeriodStart = "2014-08-01";
String expectedBillingPeriodEnd = "2015-04-19";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.LOC_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_LOC_BillSingleDay() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2015-04-19";
String expectedBillingPeriodStart = "2015-04-19";
String expectedBillingPeriodEnd = "2015-04-20";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.LOC_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_LOC_BillSeveralMonths() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2014-11-15";
String expectedBillingPeriodStart = "2014-11-15";
String expectedBillingPeriodEnd = "2015-04-20";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.LOC_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_LOC_BillAcrossFiscalYears() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2014-06-15";
String expectedBillingPeriodStart = "2014-06-15";
String expectedBillingPeriodEnd = "2015-04-20";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.LOC_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_LOC_MayNotBillNow() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2015-04-20";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.LOC_BILLING_SCHEDULE_CODE);
}
@Test
public void canThisBeBilledLastBilledDateIsNull() {
boolean expectedCanThisBeBilled = true;
String awardStartDate = "2015-01-01";
String lastBilledDate = null;
String currentDate = "2015-04-21";
validateCanThisBeBilled(expectedCanThisBeBilled, awardStartDate, lastBilledDate, currentDate);
}
@Test
public void canThisBeBilledLastBilledDateIsToday() {
boolean expectedCanThisBeBilled = false;
String awardStartDate = "2015-01-01";
String lastBilledDate = "2015-04-21";
String currentDate = "2015-04-21";
validateCanThisBeBilled(expectedCanThisBeBilled, awardStartDate, lastBilledDate, currentDate);
}
@Test
public void canThisBeBilledLastBilledDateIsYesterday() {
boolean expectedCanThisBeBilled = false;
String awardStartDate = "2015-01-01";
String lastBilledDate = "2015-04-20";
String currentDate = "2015-04-21";
validateCanThisBeBilled(expectedCanThisBeBilled, awardStartDate, lastBilledDate, currentDate);
}
@Test
public void canThisBeBilledLastBilledDateIsBeforeYesterday() {
boolean expectedCanThisBeBilled = true;
String awardStartDate = "2015-01-01";
String lastBilledDate = "2015-04-19";
String currentDate = "2015-04-21";
validateCanThisBeBilled(expectedCanThisBeBilled, awardStartDate, lastBilledDate, currentDate);
}
protected void validateCanThisBeBilled(boolean expectedCanThisBeBilled, String awardStartDate, String lastBilledDate, String currentDate) {
AccountingPeriodService accountingPeriodService = getMockAccountingPeriodService();
BillingPeriod billingPeriod = new LetterOfCreditBillingPeriod(ArConstants.LOC_BILLING_SCHEDULE_CODE, nullSafeDateFromString(awardStartDate), nullSafeDateFromString(currentDate), nullSafeDateFromString(lastBilledDate), accountingPeriodService);
Assert.assertEquals(expectedCanThisBeBilled, billingPeriod.canThisBeBilled());
}
}