killbill-memoizeit

Details

diff --git a/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java b/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
index 00be061..3c2e658 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
@@ -23,11 +23,11 @@ import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
 import java.math.BigDecimal;
-import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.Callable;
 
+import org.apache.commons.lang.RandomStringUtils;
 import org.joda.time.DateTime;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
@@ -38,10 +38,17 @@ import com.google.inject.Inject;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.account.api.DefaultAccount;
+import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.entitlement.api.billing.BillingEvent;
+import com.ning.billing.entitlement.api.billing.BillingModeType;
+import com.ning.billing.invoice.api.BillingEventSet;
+import com.ning.billing.invoice.api.DefaultBillingEvent;
 import com.ning.billing.invoice.api.Invoice;
-import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.invoice.model.DefaultInvoice;
+import com.ning.billing.invoice.model.DefaultInvoiceGenerator;
+import com.ning.billing.invoice.model.InvoiceGenerator;
+import com.ning.billing.invoice.model.InvoiceItemList;
+import com.ning.billing.invoice.tests.InternationalPriceMock;
 import com.ning.billing.payment.api.PaymentError;
 import com.ning.billing.payment.setup.PaymentTestModule;
 import com.ning.billing.util.eventbus.EventBus;
@@ -55,6 +62,9 @@ public class TestPaymentProvider {
     private RequestProcessor invoiceProcessor;
     @Inject
     private AccountUserApi accountUserApi;
+    @Inject
+    private Invoice invoiceApi;
+
     private MockPaymentInfoReceiver paymentInfoReceiver;
 
     @BeforeMethod(alwaysRun = true)
@@ -72,25 +82,39 @@ public class TestPaymentProvider {
     }
 
     protected Account getTestAccount() {
-        return accountUserApi.createAccount(new DefaultAccount());
+        String name = "First" + RandomStringUtils.random(5) + " " + "Last" + RandomStringUtils.random(5);
+        String externalKey = "12345";
+//        return accountUserApi.createAccount(new DefaultAccount(UUID.randomUUID(), externalKey, "user@example.com", name, name.length(), "123-456-7890", Currency.USD, 1, null));
+        return new DefaultAccount(UUID.randomUUID(), externalKey, "user@example.com", name, name.length(), "123-456-7890", Currency.USD, 1, null);
     }
 
     @Test
     public void testSimpleInvoice() throws Exception {
+        InvoiceGenerator generator = new DefaultInvoiceGenerator();
+
         final Account account = getTestAccount();
-        final UUID subscriptionUuid = UUID.randomUUID();
         final UUID invoiceUuid = UUID.randomUUID();
         final DateTime now = new DateTime();
-        final InvoiceItem lineItem = new InvoiceItem(invoiceUuid,
-                                                     subscriptionUuid,
-                                                     now,
-                                                     now.plusMonths(1),
-                                                     "Test invoice",
-                                                     new BigDecimal("10"),
-                                                     new BigDecimal("1"),
-                                                     Currency.USD);
-        final List<InvoiceItem> lineItems = Arrays.asList(lineItem);
-        final Invoice invoice = new DefaultInvoice(account.getId(), lineItems, Currency.USD);
+
+        BillingEventSet events = new BillingEventSet();
+
+        UUID subscriptionId = UUID.randomUUID();
+        String planName = "My plan";
+        String phaseName = "phase 1";
+
+        BillingEvent event = new DefaultBillingEvent(subscriptionId, now, planName, phaseName,
+                                               new InternationalPriceMock(new BigDecimal("10.00")), BillingPeriod.MONTHLY,
+                                               1, BillingModeType.IN_ADVANCE);
+        events.add(event);
+
+        InvoiceItemList existingInvoiceItems = new InvoiceItemList();
+
+        UUID accountId = UUID.randomUUID();
+
+        Invoice invoice = generator.generateInvoice(accountId, events, existingInvoiceItems, now, Currency.USD);
+        existingInvoiceItems.addAll(invoice.getItems());
+
+//        DefaultInvoice(account.getId(), lineItems, Currency.USD);
 
         eventBus.post(invoice);
         await().atMost(1, MINUTES).until(new Callable<Boolean>() {