killbill-memoizeit

Details

diff --git a/catalog/src/test/resources/catalogTest.xml b/catalog/src/test/resources/catalogTest.xml
index 78e4449..d15d55f 100644
--- a/catalog/src/test/resources/catalogTest.xml
+++ b/catalog/src/test/resources/catalogTest.xml
@@ -448,7 +448,7 @@
             </finalPhase>
         </plan>
 
-        <plan name="shotgun-monthly">
+        <plan name="shotgun-monthly" prettyName="Shotgun Monthly">
             <product>Shotgun</product>
             <initialPhases>
                 <phase type="TRIAL">
@@ -1220,14 +1220,14 @@
                 </recurring>
             </finalPhase>
         </plan>
-        <plan name="bullets-usage-in-arrear">
+        <plan name="bullets-usage-in-arrear" prettyName="Bullet Monthly Plan">
             <product>Bullets</product>
-            <finalPhase type="EVERGREEN">
+            <finalPhase type="EVERGREEN" prettyName="Bullet Monthly Plan Evergreen">
                 <duration>
                     <unit>UNLIMITED</unit>
                 </duration>
                 <usages>
-                    <usage name="bullets-usage-in-arrear-usage" billingMode="IN_ARREAR" usageType="CONSUMABLE">
+                    <usage name="bullets-usage-in-arrear-usage" prettyName="Bullet Usage In Arrear" billingMode="IN_ARREAR" usageType="CONSUMABLE">
                         <billingPeriod>MONTHLY</billingPeriod>
                         <tiers>
                             <tier>
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
index 3869400..f59f5d8 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
@@ -144,7 +144,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
 
     @Override
     public String getPrettyPlanName() {
-        return getPlanName();
+        return Strings.nullToEmpty(translator.getTranslation(item.getPrettyPlanName()));
     }
 
     @Override
@@ -154,7 +154,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
 
     @Override
     public String getPrettyPhaseName() {
-        return getPhaseName();
+        return Strings.nullToEmpty(translator.getTranslation(item.getPrettyPhaseName()));
     }
 
     @Override
@@ -164,7 +164,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
 
     @Override
     public String getPrettyUsageName() {
-        return getUsageName();
+        return Strings.nullToEmpty(translator.getTranslation(item.getPrettyUsageName()));
     }
 
     @Override
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
index 2bc9ccc..8ad9cc1 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
@@ -55,6 +55,9 @@ public class InvoiceItemJson extends JsonBase {
     private final String planName;
     private final String phaseName;
     private final String usageName;
+    private final String prettyPlanName;
+    private final String prettyPhaseName;
+    private final String prettyUsageName;
     private final String itemType;
     private final String description;
     private final LocalDate startDate;
@@ -74,6 +77,9 @@ public class InvoiceItemJson extends JsonBase {
                            @JsonProperty("planName") final String planName,
                            @JsonProperty("phaseName") final String phaseName,
                            @JsonProperty("usageName") final String usageName,
+                           @JsonProperty("prettyPlanName") final String prettyPlanName,
+                           @JsonProperty("prettyPhaseName") final String prettyPhaseName,
+                           @JsonProperty("prettyUsageName") final String prettyUsageName,
                            @JsonProperty("itemType") final String itemType,
                            @JsonProperty("description") final String description,
                            @JsonProperty("startDate") final LocalDate startDate,
@@ -93,6 +99,9 @@ public class InvoiceItemJson extends JsonBase {
         this.planName = planName;
         this.phaseName = phaseName;
         this.usageName = usageName;
+        this.prettyPlanName = prettyPlanName;
+        this.prettyPhaseName = prettyPhaseName;
+        this.prettyUsageName = prettyUsageName;
         this.itemType = itemType;
         this.description = description;
         this.startDate = startDate;
@@ -105,7 +114,9 @@ public class InvoiceItemJson extends JsonBase {
     public InvoiceItemJson(final InvoiceItem item, final List<InvoiceItem> childItems, @Nullable final List<AuditLog> auditLogs) {
         this(toString(item.getId()), toString(item.getInvoiceId()), toString(item.getLinkedItemId()),
              toString(item.getAccountId()), toString(item.getChildAccountId()), toString(item.getBundleId()), toString(item.getSubscriptionId()),
-             item.getPlanName(), item.getPhaseName(), item.getUsageName(), item.getInvoiceItemType().toString(),
+             item.getPlanName(), item.getPhaseName(), item.getUsageName(),
+             item.getPrettyPlanName(), item.getPrettyPhaseName(), item.getPrettyUsageName(),
+             item.getInvoiceItemType().toString(),
              item.getDescription(), item.getStartDate(), item.getEndDate(),
              item.getAmount(), item.getCurrency().name(), toInvoiceItemJson(childItems), toAuditLogJson(auditLogs));
     }
@@ -186,7 +197,7 @@ public class InvoiceItemJson extends JsonBase {
 
             @Override
             public String getPrettyPlanName() {
-                return planName;
+                return prettyPlanName;
             }
 
             @Override
@@ -196,7 +207,7 @@ public class InvoiceItemJson extends JsonBase {
 
             @Override
             public String getPrettyPhaseName() {
-                return phaseName;
+                return prettyPhaseName;
             }
 
             @Override
@@ -206,7 +217,7 @@ public class InvoiceItemJson extends JsonBase {
 
             @Override
             public String getPrettyUsageName() {
-                return usageName;
+                return prettyUsageName;
             }
 
             @Override
@@ -285,6 +296,18 @@ public class InvoiceItemJson extends JsonBase {
         return usageName;
     }
 
+    public String getPrettyPlanName() {
+        return prettyPlanName;
+    }
+
+    public String getPrettyPhaseName() {
+        return prettyPhaseName;
+    }
+
+    public String getPrettyUsageName() {
+        return prettyUsageName;
+    }
+
     public String getItemType() {
         return itemType;
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index b89a910..a7ad890 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -562,6 +562,9 @@ public class InvoiceResource extends JaxRsResourceBase {
                                                    input.getPlanName(),
                                                    input.getPhaseName(),
                                                    input.getUsageName(),
+                                                   input.getPrettyPlanName(),
+                                                   input.getPrettyPhaseName(),
+                                                   input.getPrettyUsageName(),
                                                    input.getItemType(),
                                                    input.getDescription(),
                                                    input.getStartDate(),
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
index bd54e91..42f51ba 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
@@ -21,14 +21,13 @@ import java.util.List;
 import java.util.UUID;
 
 import org.joda.time.LocalDate;
-import org.mockito.Mockito;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.invoice.api.InvoiceItem;
 import org.killbill.billing.invoice.api.InvoiceItemType;
 import org.killbill.billing.jaxrs.JaxrsTestSuiteNoDB;
+import org.mockito.Mockito;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 import static org.killbill.billing.jaxrs.JaxrsTestUtils.createAuditLogsJson;
 
@@ -54,8 +53,10 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuiteNoDB {
         final Currency currency = Currency.MXN;
         final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow());
         final InvoiceItemJson invoiceItemJson = new InvoiceItemJson(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId, childAccountId,
-                                                                                      bundleId, subscriptionId, planName, phaseName, usageName, type, description,
-                                                                                      startDate, endDate, amount, currency.name(), null, auditLogs);
+                                                                    bundleId, subscriptionId, planName, phaseName, usageName,
+                                                                    null, null, null,
+                                                                    type, description,
+                                                                    startDate, endDate, amount, currency.name(), null, auditLogs);
         Assert.assertEquals(invoiceItemJson.getInvoiceItemId(), invoiceItemId);
         Assert.assertEquals(invoiceItemJson.getInvoiceId(), invoiceId);
         Assert.assertEquals(invoiceItemJson.getLinkedInvoiceItemId(), linkedInvoiceItemId);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java
index c7c7ddc..5d909f1 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java
@@ -19,6 +19,8 @@ package org.killbill.billing.jaxrs;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.killbill.billing.ErrorCode;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.PriceListSet;
@@ -26,11 +28,15 @@ import org.killbill.billing.catalog.api.ProductCategory;
 import org.killbill.billing.client.KillBillClientException;
 import org.killbill.billing.client.model.Account;
 import org.killbill.billing.client.model.Bundle;
+import org.killbill.billing.client.model.InvoiceItem;
+import org.killbill.billing.client.model.Invoices;
 import org.killbill.billing.client.model.RolledUpUsage;
 import org.killbill.billing.client.model.Subscription;
 import org.killbill.billing.client.model.SubscriptionUsageRecord;
 import org.killbill.billing.client.model.UnitUsageRecord;
 import org.killbill.billing.client.model.UsageRecord;
+import org.killbill.billing.invoice.api.InvoiceItemType;
+import org.killbill.billing.util.api.AuditLevel;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -114,6 +120,25 @@ public class TestUsage extends TestJaxrsBase {
         Assert.assertEquals(retrievedUsage4.getRolledUpUnits().size(), 1);
         Assert.assertEquals(retrievedUsage4.getRolledUpUnits().get(0).getUnitType(), "bullets");
         Assert.assertEquals((long) retrievedUsage4.getRolledUpUnits().get(0).getAmount(), 5);
+
+        clock.addMonths(1);
+        crappyWaitForLackOfProperSynchonization();
+
+
+        final Invoices invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, AuditLevel.MINIMAL, requestOptions);
+        Assert.assertEquals(invoices.size(), 2);
+
+        final InvoiceItem usageItem =  Iterables.tryFind(invoices.get(1).getItems(), new Predicate<InvoiceItem>() {
+            @Override
+            public boolean apply(final InvoiceItem input) {
+                return InvoiceItemType.valueOf(input.getItemType()) == InvoiceItemType.USAGE;
+            }
+        }).orNull();
+        Assert.assertNotNull(usageItem);
+
+        Assert.assertEquals(usageItem.getPrettyPlanName(), "Bullet Monthly Plan");
+        Assert.assertEquals(usageItem.getPrettyPhaseName(), "Bullet Monthly Plan Evergreen");
+        Assert.assertEquals(usageItem.getPrettyUsageName(), "Bullet Usage In Arrear");
     }
 
     @Test(groups = "slow", description = "Test tracking ID already exists")