killbill-aplcache
Changes
invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java 2(+1 -1)
Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java
index 517fcec..3652965 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java
@@ -118,7 +118,7 @@ public class ContiguousIntervalCapacityUsageInArrear extends ContiguousIntervalU
complies = false;
} else {
if (!perUnitTypeDetailTierLevel.contains(ro.getUnitType())) {
- toBeBilledDetails.add(new UsageConsumableInArrearTierUnitDetail(tierNum, ro.getUnitType(), cur.getRecurringPrice().getPrice(getCurrency()), 1, ro.getAmount().intValue(), BigDecimal.ZERO));
+ toBeBilledDetails.add(new UsageInArrearTierUnitDetail(tierNum, ro.getUnitType(), cur.getRecurringPrice().getPrice(getCurrency()), ro.getAmount().intValue()));
perUnitTypeDetailTierLevel.add(ro.getUnitType());
}
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/details/UsageCapacityInArrearDetail.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/details/UsageCapacityInArrearDetail.java
index e80b7a7..9298f99 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/details/UsageCapacityInArrearDetail.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/details/UsageCapacityInArrearDetail.java
@@ -53,10 +53,12 @@ public class UsageCapacityInArrearDetail implements UsageInArrearDetail {
@Override
public String toJson(final ObjectMapper objectMapper) {
+
+
String result = null;
if (tierDetails != null && tierDetails.size() > 0) {
try {
- result = objectMapper.writeValueAsString(tierDetails);
+ result = objectMapper.writeValueAsString(this);
} catch (JsonProcessingException e) {
Preconditions.checkState(false, e.getMessage());
}
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java
index 167e2fa..32ac873 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java
@@ -39,7 +39,6 @@ import org.killbill.billing.invoice.model.FixedPriceInvoiceItem;
import org.killbill.billing.invoice.model.UsageInvoiceItem;
import org.killbill.billing.invoice.usage.ContiguousIntervalUsageInArrear.UsageInArrearItemsAndNextNotificationDate;
import org.killbill.billing.invoice.usage.details.UsageCapacityInArrearDetail;
-import org.killbill.billing.invoice.usage.details.UsageConsumableInArrearTierUnitDetail;
import org.killbill.billing.invoice.usage.details.UsageInArrearTierUnitDetail;
import org.killbill.billing.junction.BillingEvent;
import org.killbill.billing.usage.RawUsage;
@@ -278,17 +277,21 @@ public class TestContiguousIntervalCapacityInArrear extends TestUsageInArrearBas
assertEquals(result.size(), 1);
assertEquals(result.get(0).getAmount().compareTo(BigDecimal.ONE), 0, String.format("%s != 1.0", result.get(0).getAmount()));
- List<UsageConsumableInArrearTierUnitDetail> itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<List<UsageConsumableInArrearTierUnitDetail>>() {});
+ UsageCapacityInArrearDetail itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<UsageCapacityInArrearDetail>() {});
+ assertEquals(itemDetails.getAmount().compareTo(BigDecimal.ONE), 0);
+ assertEquals(itemDetails.getTierDetails().size(), 2);
+
+ List<UsageInArrearTierUnitDetail> itemUnitDetails = itemDetails.getTierDetails();
// BAR item detail
- assertEquals(itemDetails.get(0).getTierUnit(), "BAR");
- assertEquals(itemDetails.get(0).getTier(), 1);
- assertEquals(itemDetails.get(0).getQuantity().intValue(), 99);
- assertEquals(itemDetails.get(0).getTierPrice().compareTo(BigDecimal.ONE), 0);
+ assertEquals(itemUnitDetails.get(0).getTierUnit(), "BAR");
+ assertEquals(itemUnitDetails.get(0).getTier(), 1);
+ assertEquals(itemUnitDetails.get(0).getQuantity().intValue(), 99);
+ assertEquals(itemUnitDetails.get(0).getTierPrice().compareTo(BigDecimal.ONE), 0);
// FOO item detail
- assertEquals(itemDetails.get(1).getTierUnit(), "FOO");
- assertEquals(itemDetails.get(1).getTier(), 1);
- assertEquals(itemDetails.get(1).getQuantity().intValue(), 5);
- assertEquals(itemDetails.get(1).getTierPrice().compareTo(BigDecimal.ONE), 0);
+ assertEquals(itemUnitDetails.get(1).getTierUnit(), "FOO");
+ assertEquals(itemUnitDetails.get(1).getTier(), 1);
+ assertEquals(itemUnitDetails.get(1).getQuantity().intValue(), 5);
+ assertEquals(itemUnitDetails.get(1).getTierPrice().compareTo(BigDecimal.ONE), 0);
// Case 2
rawUsages = new ArrayList<RawUsage>();
@@ -298,18 +301,22 @@ public class TestContiguousIntervalCapacityInArrear extends TestUsageInArrearBas
assertEquals(result.size(), 1);
assertEquals(result.get(0).getAmount().compareTo(BigDecimal.TEN), 0, String.format("%s != 10.0", result.get(0).getAmount()));
- itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<List<UsageConsumableInArrearTierUnitDetail>>() {});
+ itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<UsageCapacityInArrearDetail>() {});
+ assertEquals(itemDetails.getAmount().compareTo(BigDecimal.TEN), 0);
+ assertEquals(itemDetails.getTierDetails().size(), 2);
+ itemUnitDetails = itemDetails.getTierDetails();
+
// FOO item detail
- assertEquals(itemDetails.get(0).getTierUnit(), "FOO");
- assertEquals(itemDetails.get(0).getTier(), 1);
- assertEquals(itemDetails.get(0).getQuantity().intValue(), 5);
- assertEquals(itemDetails.get(0).getTierPrice().compareTo(BigDecimal.ONE), 0);
+ assertEquals(itemUnitDetails.get(0).getTierUnit(), "FOO");
+ assertEquals(itemUnitDetails.get(0).getTier(), 1);
+ assertEquals(itemUnitDetails.get(0).getQuantity().intValue(), 5);
+ assertEquals(itemUnitDetails.get(0).getTierPrice().compareTo(BigDecimal.ONE), 0);
// BAR item detail
- assertEquals(itemDetails.get(1).getTierUnit(), "BAR");
- assertEquals(itemDetails.get(1).getTier(), 2);
- assertEquals(itemDetails.get(1).getQuantity().intValue(), 101);
- assertEquals(itemDetails.get(1).getTierPrice().compareTo(BigDecimal.TEN), 0);
+ assertEquals(itemUnitDetails.get(1).getTierUnit(), "BAR");
+ assertEquals(itemUnitDetails.get(1).getTier(), 2);
+ assertEquals(itemUnitDetails.get(1).getQuantity().intValue(), 101);
+ assertEquals(itemUnitDetails.get(1).getTierPrice().compareTo(BigDecimal.TEN), 0);
// Case 3
rawUsages = new ArrayList<RawUsage>();
@@ -319,25 +326,32 @@ public class TestContiguousIntervalCapacityInArrear extends TestUsageInArrearBas
assertEquals(result.size(), 1);
assertEquals(result.get(0).getAmount().compareTo(new BigDecimal("100.0")), 0, String.format("%s != 100.0", result.get(0).getAmount()));
- itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<List<UsageConsumableInArrearTierUnitDetail>>() {});
+ itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<UsageCapacityInArrearDetail>() {});
+ assertEquals(itemDetails.getAmount().compareTo(new BigDecimal("100.0")), 0);
+ assertEquals(itemDetails.getTierDetails().size(), 2);
+ itemUnitDetails = itemDetails.getTierDetails();
+
// BAR item detail
- assertEquals(itemDetails.get(0).getTierUnit(), "BAR");
- assertEquals(itemDetails.get(0).getTier(), 2);
- assertEquals(itemDetails.get(0).getQuantity().intValue(), 101);
- assertEquals(itemDetails.get(0).getTierPrice().compareTo(new BigDecimal("10.0")), 0);
+ assertEquals(itemUnitDetails.get(0).getTierUnit(), "BAR");
+ assertEquals(itemUnitDetails.get(0).getTier(), 2);
+ assertEquals(itemUnitDetails.get(0).getQuantity().intValue(), 101);
+ assertEquals(itemUnitDetails.get(0).getTierPrice().compareTo(new BigDecimal("10.0")), 0);
+
// FOO item detail
- assertEquals(itemDetails.get(1).getTierUnit(), "FOO");
- assertEquals(itemDetails.get(1).getTier(), 3);
- assertEquals(itemDetails.get(1).getQuantity().intValue(), 75);
- assertEquals(itemDetails.get(1).getTierPrice().compareTo(new BigDecimal("100.0")), 0);
+ assertEquals(itemUnitDetails.get(1).getTierUnit(), "FOO");
+ assertEquals(itemUnitDetails.get(1).getTier(), 3);
+ assertEquals(itemUnitDetails.get(1).getQuantity().intValue(), 75);
+ assertEquals(itemUnitDetails.get(1).getTierPrice().compareTo(new BigDecimal("100.0")), 0);
+
}
@Test(groups = "fast")
public void testMultipleItemsAndTiersWithExistingItems() throws CatalogApiException, IOException, InvoiceApiException {
// let's assume we have some existing usage
- final UsageInArrearTierUnitDetail existingFooUsageTier1 = new UsageConsumableInArrearTierUnitDetail(1, "FOO", BigDecimal.ONE, 1, 9, BigDecimal.TEN);
- final UsageInArrearTierUnitDetail existingBarUsageTier2 = new UsageConsumableInArrearTierUnitDetail(2, "BAR", BigDecimal.TEN, 1, 200, BigDecimal.TEN);
+ final UsageInArrearTierUnitDetail existingFooUsageTier1 = new UsageInArrearTierUnitDetail(1, "FOO", BigDecimal.ONE, 9);
+ final UsageInArrearTierUnitDetail existingBarUsageTier2 = new UsageInArrearTierUnitDetail(2, "BAR", BigDecimal.TEN, 200);
+
List<RawUsage> rawUsages = new ArrayList<RawUsage>();
rawUsages.add(new DefaultRawUsage(subscriptionId, new LocalDate(2014, 03, 20), "FOO", 60L)); // tier 3
@@ -355,17 +369,22 @@ public class TestContiguousIntervalCapacityInArrear extends TestUsageInArrearBas
assertEquals(result.size(), 1);
assertEquals(result.get(0).getAmount().compareTo(new BigDecimal("90.00")), 0, String.format("%s != 90.0", result.get(0).getAmount()));
- List<UsageConsumableInArrearTierUnitDetail> itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<List<UsageConsumableInArrearTierUnitDetail>>() {});
+ UsageCapacityInArrearDetail itemDetails = objectMapper.readValue(result.get(0).getItemDetails(), new TypeReference<UsageCapacityInArrearDetail>() {});
+ assertEquals(itemDetails.getAmount().compareTo(new BigDecimal("100.00")), 0);
+ assertEquals(itemDetails.getTierDetails().size(), 2);
+
+ List<UsageInArrearTierUnitDetail> itemUnitDetails = itemDetails.getTierDetails();
+
// BAR item detail
- assertEquals(itemDetails.get(0).getTierUnit(), "BAR");
- assertEquals(itemDetails.get(0).getTier(), 2);
- assertEquals(itemDetails.get(0).getQuantity().intValue(), 200);
- assertEquals(itemDetails.get(0).getTierPrice().compareTo(BigDecimal.TEN), 0);
+ assertEquals(itemUnitDetails.get(0).getTierUnit(), "BAR");
+ assertEquals(itemUnitDetails.get(0).getTier(), 2);
+ assertEquals(itemUnitDetails.get(0).getQuantity().intValue(), 200);
+ assertEquals(itemUnitDetails.get(0).getTierPrice().compareTo(BigDecimal.TEN), 0);
// FOO item detail
- assertEquals(itemDetails.get(1).getTierUnit(), "FOO");
- assertEquals(itemDetails.get(1).getTier(), 3);
- assertEquals(itemDetails.get(1).getQuantity().intValue(), 60);
- assertEquals(itemDetails.get(1).getTierPrice().compareTo(new BigDecimal("100.00")), 0);
+ assertEquals(itemUnitDetails.get(1).getTierUnit(), "FOO");
+ assertEquals(itemUnitDetails.get(1).getTier(), 3);
+ assertEquals(itemUnitDetails.get(1).getQuantity().intValue(), 60);
+ assertEquals(itemUnitDetails.get(1).getTierPrice().compareTo(new BigDecimal("100.00")), 0);
}
private List<InvoiceItem> produceInvoiceItems(List<RawUsage> rawUsages, UsageDetailMode usageDetailMode, List<InvoiceItem> existingItems) throws CatalogApiException, InvoiceApiException {