Search in sources :

Example 11 with DefaultUsage

use of org.killbill.billing.catalog.DefaultUsage in project killbill by killbill.

the class TestRawUsageOptimizer method testWithOneMonthlyAndOneNonActiveAnnualUsageSectionAndEnoughUsageItems.

@Test(groups = "fast")
public void testWithOneMonthlyAndOneNonActiveAnnualUsageSectionAndEnoughUsageItems() {
    final LocalDate firstEventStartDate = new LocalDate(2014, 03, 15);
    final List<InvoiceItem> invoiceItems = new ArrayList<InvoiceItem>();
    for (int i = 0; i < 5; i++) {
        invoiceItems.add(createUsageItem(firstEventStartDate.plusMonths(i)));
    }
    final LocalDate targetDate = invoiceItems.get(invoiceItems.size() - 1).getEndDate();
    final Map<String, Usage> knownUsage = new HashMap<String, Usage>();
    final DefaultTieredBlock block = createDefaultTieredBlock("unit", 100, 1000, BigDecimal.ONE);
    final DefaultTier tier = createDefaultTierWithBlocks(block);
    final DefaultUsage usage = createConsumableInArrearUsage(usageName, BillingPeriod.MONTHLY, tier);
    knownUsage.put(usageName, usage);
    final DefaultTieredBlock block2 = createDefaultTieredBlock("unit2", 10, 10000, BigDecimal.TEN);
    final DefaultTier tier2 = createDefaultTierWithBlocks(block2);
    final DefaultUsage usage2 = createConsumableInArrearUsage("usageName2", BillingPeriod.ANNUAL, tier2);
    knownUsage.put("usageName2", usage2);
    final LocalDate result = rawUsageOptimizer.getOptimizedRawUsageStartDate(firstEventStartDate, targetDate, invoiceItems, knownUsage, internalCallContext);
    // The same reasoning applies as previously because there is no usage items against the annual and
    // so, the largest endDate for ii is 2014-08-15, and by default org.killbill.invoice.readMaxRawUsagePreviousPeriod == 2 => targetDate =>  2014-06-15
    Assert.assertEquals(result.compareTo(new LocalDate(2014, 06, 15)), 0, "142 got " + result);
}
Also used : Usage(org.killbill.billing.catalog.api.Usage) DefaultUsage(org.killbill.billing.catalog.DefaultUsage) UsageInvoiceItem(org.killbill.billing.invoice.model.UsageInvoiceItem) InvoiceItem(org.killbill.billing.invoice.api.InvoiceItem) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) DefaultUsage(org.killbill.billing.catalog.DefaultUsage) DefaultTieredBlock(org.killbill.billing.catalog.DefaultTieredBlock) LocalDate(org.joda.time.LocalDate) DefaultTier(org.killbill.billing.catalog.DefaultTier) Test(org.testng.annotations.Test)

Example 12 with DefaultUsage

use of org.killbill.billing.catalog.DefaultUsage in project killbill by killbill.

the class TestRawUsageOptimizer method testWithNoItems.

@Test(groups = "fast")
public void testWithNoItems() {
    final LocalDate firstEventStartDate = new LocalDate(2014, 03, 15);
    final List<InvoiceItem> invoiceItems = new ArrayList<InvoiceItem>();
    final Map<String, Usage> knownUsage = new HashMap<String, Usage>();
    final DefaultTieredBlock block = createDefaultTieredBlock("unit", 100, 1000, BigDecimal.ONE);
    final DefaultTier tier = createDefaultTierWithBlocks(block);
    final DefaultUsage usage = createConsumableInArrearUsage(usageName, BillingPeriod.MONTHLY, tier);
    knownUsage.put(usageName, usage);
    final LocalDate result = rawUsageOptimizer.getOptimizedRawUsageStartDate(firstEventStartDate, firstEventStartDate.plusDays(1), invoiceItems, knownUsage, internalCallContext);
    Assert.assertEquals(result.compareTo(firstEventStartDate), 0);
}
Also used : Usage(org.killbill.billing.catalog.api.Usage) DefaultUsage(org.killbill.billing.catalog.DefaultUsage) UsageInvoiceItem(org.killbill.billing.invoice.model.UsageInvoiceItem) InvoiceItem(org.killbill.billing.invoice.api.InvoiceItem) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) DefaultUsage(org.killbill.billing.catalog.DefaultUsage) DefaultTieredBlock(org.killbill.billing.catalog.DefaultTieredBlock) LocalDate(org.joda.time.LocalDate) DefaultTier(org.killbill.billing.catalog.DefaultTier) Test(org.testng.annotations.Test)

Example 13 with DefaultUsage

use of org.killbill.billing.catalog.DefaultUsage in project killbill by killbill.

the class TestUsageInArrearBase method createCapacityInArrearUsage.

protected DefaultUsage createCapacityInArrearUsage(final String usageName, final BillingPeriod billingPeriod, final DefaultTier... tiers) {
    final DefaultUsage usage = new DefaultUsage();
    usage.setName(usageName);
    usage.setBillingMode(BillingMode.IN_ARREAR);
    usage.setUsageType(UsageType.CAPACITY);
    usage.setBillingPeriod(billingPeriod);
    usage.setTiers(tiers);
    return usage;
}
Also used : DefaultUsage(org.killbill.billing.catalog.DefaultUsage)

Aggregations

DefaultUsage (org.killbill.billing.catalog.DefaultUsage)13 LocalDate (org.joda.time.LocalDate)11 DefaultTier (org.killbill.billing.catalog.DefaultTier)11 Test (org.testng.annotations.Test)11 DefaultTieredBlock (org.killbill.billing.catalog.DefaultTieredBlock)8 Usage (org.killbill.billing.catalog.api.Usage)8 InvoiceItem (org.killbill.billing.invoice.api.InvoiceItem)8 UsageInvoiceItem (org.killbill.billing.invoice.model.UsageInvoiceItem)8 RawUsage (org.killbill.billing.usage.RawUsage)7 DefaultRawUsage (org.killbill.billing.usage.api.svcs.DefaultRawUsage)7 BigDecimal (java.math.BigDecimal)6 ArrayList (java.util.ArrayList)6 RolledUpUsage (org.killbill.billing.usage.api.RolledUpUsage)5 HashMap (java.util.HashMap)4 FixedPriceInvoiceItem (org.killbill.billing.invoice.model.FixedPriceInvoiceItem)4 DefaultLimit (org.killbill.billing.catalog.DefaultLimit)3 DefaultUnit (org.killbill.billing.catalog.DefaultUnit)3 BillingEvent (org.killbill.billing.junction.BillingEvent)3 Predicate (com.google.common.base.Predicate)2 UsageInArrearItemsAndNextNotificationDate (org.killbill.billing.invoice.usage.ContiguousIntervalUsageInArrear.UsageInArrearItemsAndNextNotificationDate)2