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>() {