diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
index 2a0f5cd..39a9968 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
@@ -16,7 +16,75 @@
package com.ning.billing.beatrix.integration;
-public class TestIntegrationWithAutoInvoiceOffTag {
-
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.assertEquals;
+
+import java.util.Collection;
+
+import junit.framework.Assert;
+
+import org.joda.time.DateTime;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Guice;
+import org.testng.annotations.Test;
+
+import com.google.inject.Inject;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.api.TestApiListener.NextEvent;
+import com.ning.billing.catalog.api.BillingPeriod;
+import com.ning.billing.catalog.api.PlanPhaseSpecifier;
+import com.ning.billing.catalog.api.PriceListSet;
+import com.ning.billing.catalog.api.ProductCategory;
+import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.entitlement.api.user.SubscriptionData;
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.InvoiceUserApi;
+
+@Guice(modules = {BeatrixModule.class})
+public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
+
+ @Inject
+ private InvoiceUserApi invoiceApi;
+
//TODO MDW write this test TestIntegrationWithAutoInvoiceOffTag
+ private Account account;
+ private SubscriptionBundle bundle;
+ private String productName;
+ private BillingPeriod term;
+ private String planSetName;
+
+ @BeforeMethod(groups = {"slow"})
+ public void setupOverdue() throws Exception {
+
+ account = accountUserApi.createAccount(getAccountData(25), null, null, context);
+ assertNotNull(account);
+
+ bundle = entitlementUserApi.createBundleForAccount(account.getId(), "whatever", context);
+
+ productName = "Shotgun";
+ term = BillingPeriod.MONTHLY;
+ planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
+ }
+
+ @Test(groups={"slow"}, enabled = true)
+ public void testAutoInvoiceOffAccount() throws Exception {
+ clock.setTime(new DateTime(2012, 5, 1, 0, 3, 42, 0));
+
+ // set next invoice to fail and create network
+ busHandler.pushExpectedEvents(NextEvent.CREATE, NextEvent.INVOICE);
+ SubscriptionData baseSubscription = subscriptionDataFromSubscription(entitlementUserApi.createSubscription(bundle.getId(),
+ new PlanPhaseSpecifier(productName, ProductCategory.BASE, term, planSetName, null), null, context));
+ assertNotNull(baseSubscription);
+ assertTrue(busHandler.isCompleted(DELAY));
+
+ busHandler.pushExpectedEvents(NextEvent.PHASE, NextEvent.INVOICE, NextEvent.PAYMENT_ERROR);
+ clock.addDays(10); // DAY 10 still in trial
+ assertTrue(busHandler.isCompleted(DELAY));
+
+ Collection<Invoice> invoices = invoiceApi.getInvoicesByAccount(account.getId());
+
+ assertEquals(invoices.size(), 0);
+
+ }
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/MockBillingEventSet.java b/invoice/src/test/java/com/ning/billing/invoice/MockBillingEventSet.java
index 3ab1f0d..f1a9550 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/MockBillingEventSet.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/MockBillingEventSet.java
@@ -33,12 +33,12 @@ public class MockBillingEventSet extends TreeSet<BillingEvent> implements Billin
@Override
public boolean isLast(BillingEvent event) {
- return isAccountInvoiceOff;
- }
+ return event == last();
+ }
@Override
public boolean isAccountAutoInvoiceOff() {
- return false;
+ return isAccountInvoiceOff;
}
@Override
@@ -46,4 +46,12 @@ public class MockBillingEventSet extends TreeSet<BillingEvent> implements Billin
return subscriptionIdsWithAutoInvoiceOff;
}
+ public void setAccountInvoiceOff(boolean isAccountInvoiceOff) {
+ this.isAccountInvoiceOff = isAccountInvoiceOff;
+ }
+
+ public void setSubscriptionIdsWithAutoInvoiceOff(List<UUID> subscriptionIdsWithAutoInvoiceOff) {
+ this.subscriptionIdsWithAutoInvoiceOff = subscriptionIdsWithAutoInvoiceOff;
+ }
+
}
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java b/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
index fe4870c..b01473f 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/DefaultInvoiceGeneratorTests.java
@@ -836,9 +836,25 @@ public class DefaultInvoiceGeneratorTests extends InvoicingTestBase {
*/
@Test
- public void testAutoInvoiceOff() {
- BillingEventSet eventSet = new MockBillingEventSet();
- fail();
+ public void testAutoInvoiceOffAccount() throws Exception {
+ MockBillingEventSet events = new MockBillingEventSet();
+ events.setAccountInvoiceOff(true);
+
+ Subscription sub = createZombieSubscription();
+ DateTime startDate = buildDateTime(2011, 9, 1);
+
+ Plan plan = new MockPlan();
+ BigDecimal rate1 = TEN;
+ PlanPhase phase = createMockMonthlyPlanPhase(rate1);
+
+ BillingEvent event = createBillingEvent(sub.getId(), startDate, plan, phase, 1);
+ events.add(event);
+
+ DateTime targetDate = buildDateTime(2011, 10, 3);
+ UUID accountId = UUID.randomUUID();
+ Invoice invoice = generator.generateInvoice(accountId, events, null, targetDate, Currency.USD);
+
+ assertNull(invoice);
}
@Test(enabled = false)