killbill-memoizeit

overdue: update tests to new conventions See #38. Signed-off-by:

2/2/2013 1:58:47 AM

Changes

Details

diff --git a/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java b/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java
index 42378b0..53ed416 100644
--- a/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java
+++ b/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java
@@ -32,6 +32,7 @@ public class TestAccountModuleNoDB extends TestAccountModule {
     @Override
     public void configure() {
         super.configure();
+
         install(new GuicyKillbillTestNoDBModule());
         install(new MockNonEntityDaoModule());
         install(new InMemoryBusModule(configSource));
diff --git a/overdue/src/test/java/com/ning/billing/overdue/applicator/formatters/TestDefaultBillingStateFormatter.java b/overdue/src/test/java/com/ning/billing/overdue/applicator/formatters/TestDefaultBillingStateFormatter.java
index b0e7f0f..657750f 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/applicator/formatters/TestDefaultBillingStateFormatter.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/applicator/formatters/TestDefaultBillingStateFormatter.java
@@ -24,10 +24,10 @@ import org.joda.time.LocalDate;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.overdue.OverdueTestSuite;
+import com.ning.billing.overdue.OverdueTestSuiteNoDB;
 import com.ning.billing.overdue.config.api.BillingState;
 
-public class TestDefaultBillingStateFormatter extends OverdueTestSuite {
+public class TestDefaultBillingStateFormatter extends OverdueTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testBalanceFormatting() throws Exception {
diff --git a/overdue/src/test/java/com/ning/billing/overdue/applicator/OverdueBusListenerTester.java b/overdue/src/test/java/com/ning/billing/overdue/applicator/OverdueBusListenerTester.java
index 692eadd..b8bb21d 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/applicator/OverdueBusListenerTester.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/applicator/OverdueBusListenerTester.java
@@ -22,27 +22,27 @@ import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.eventbus.Subscribe;
-
 import com.ning.billing.util.events.OverdueChangeInternalEvent;
 
+import com.google.common.eventbus.Subscribe;
+
 public class OverdueBusListenerTester {
-    public static final Logger log = LoggerFactory.getLogger(OverdueBusListenerTester.class);
-    
-    private List<OverdueChangeInternalEvent> eventsReceived = new ArrayList<OverdueChangeInternalEvent>();
-    
+
+    private static final Logger log = LoggerFactory.getLogger(OverdueBusListenerTester.class);
+
+    private final List<OverdueChangeInternalEvent> eventsReceived = new ArrayList<OverdueChangeInternalEvent>();
+
     @Subscribe
     public void handleOverdueChange(final OverdueChangeInternalEvent changeEvent) {
         log.info("Received subscription transition.");
         eventsReceived.add(changeEvent);
     }
-    
+
     public List<OverdueChangeInternalEvent> getEventsReceived() {
         return eventsReceived;
     }
-    
+
     public void clearEventsReceived() {
         eventsReceived.clear();
     }
-
 }
diff --git a/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java b/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java
index 6c2a9f7..5274d18 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/applicator/TestOverdueStateApplicator.java
@@ -16,9 +16,6 @@
 
 package com.ning.billing.overdue.applicator;
 
-import static com.jayway.awaitility.Awaitility.await;
-import static java.util.concurrent.TimeUnit.SECONDS;
-
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.List;
@@ -31,32 +28,21 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.overdue.OverdueState;
-import com.ning.billing.overdue.OverdueTestBase;
+import com.ning.billing.overdue.OverdueTestSuiteWithEmbeddedDB;
 import com.ning.billing.overdue.config.OverdueConfig;
-import com.ning.billing.util.svcsapi.bus.InternalBus;
 import com.ning.billing.util.config.catalog.XMLLoader;
 import com.ning.billing.util.events.OverdueChangeInternalEvent;
 import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
 
-import com.google.inject.Inject;
-
-public class TestOverdueStateApplicator extends OverdueTestBase {
-
-    @Inject
-    OverdueStateApplicator<SubscriptionBundle> applicator;
-
-    @Inject
-    OverdueBusListenerTester listener;
+import static com.jayway.awaitility.Awaitility.await;
+import static java.util.concurrent.TimeUnit.SECONDS;
 
-    @Inject
-    InternalBus bus;
+public class TestOverdueStateApplicator extends OverdueTestSuiteWithEmbeddedDB {
 
     @Test(groups = "slow")
     public void testApplicator() throws Exception {
-        bus.register(listener);
-        bus.start();
-        final InputStream is = new ByteArrayInputStream(configXml.getBytes());
-        config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
+        final InputStream is = new ByteArrayInputStream(testOverdueHelper.getConfigXml().getBytes());
+        final OverdueConfig config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
         overdueWrapperFactory.setOverdueConfig(config);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
@@ -66,19 +52,18 @@ public class TestOverdueStateApplicator extends OverdueTestBase {
 
         state = config.getBundleStateSet().findState("OD1");
         applicator.apply(null, null, bundle, DefaultBlockingState.CLEAR_STATE_NAME, state, internalCallContext);
-        checkStateApplied(state);
+        testOverdueHelper.checkStateApplied(state);
         checkBussEvent("OD1");
 
         state = config.getBundleStateSet().findState("OD2");
-        applicator.apply(null, null,bundle, DefaultBlockingState.CLEAR_STATE_NAME, state, internalCallContext);
-        checkStateApplied(state);
+        applicator.apply(null, null, bundle, DefaultBlockingState.CLEAR_STATE_NAME, state, internalCallContext);
+        testOverdueHelper.checkStateApplied(state);
         checkBussEvent("OD2");
 
         state = config.getBundleStateSet().findState("OD3");
         applicator.apply(null, null, bundle, DefaultBlockingState.CLEAR_STATE_NAME, state, internalCallContext);
-        checkStateApplied(state);
+        testOverdueHelper.checkStateApplied(state);
         checkBussEvent("OD3");
-        bus.stop();
     }
 
     private void checkBussEvent(final String state) throws Exception {
diff --git a/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculator.java b/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculator.java
index 57b83b4..bdc8112 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculator.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculator.java
@@ -34,20 +34,13 @@ import com.ning.billing.account.api.Account;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.overdue.OverdueTestSuite;
+import com.ning.billing.overdue.OverdueTestSuiteNoDB;
 import com.ning.billing.overdue.config.api.BillingState;
 import com.ning.billing.util.callcontext.InternalTenantContext;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.ClockMock;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
 
-public class TestBillingStateCalculator extends OverdueTestSuite {
+public class TestBillingStateCalculator extends OverdueTestSuiteNoDB {
 
-    Clock clock = new ClockMock();
-    InvoiceInternalApi invoiceApi = Mockito.mock(InvoiceInternalApi.class);
-    AccountInternalApi accountApi = Mockito.mock(AccountInternalApi.class);
-    LocalDate now;
+    protected LocalDate now;
 
     @BeforeMethod(groups = "fast")
     public void setUp() throws Exception {
diff --git a/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculatorBundle.java b/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculatorBundle.java
index 029aba2..7c9f323 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculatorBundle.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/calculator/TestBillingStateCalculatorBundle.java
@@ -41,16 +41,14 @@ import com.ning.billing.invoice.api.InvoiceItem;
 import com.ning.billing.overdue.config.api.BillingStateBundle;
 import com.ning.billing.overdue.config.api.PaymentResponse;
 import com.ning.billing.util.callcontext.InternalTenantContext;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.ClockMock;
 import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
 
 public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator {
+
     private List<InvoiceItem> createInvoiceItems(final UUID[] bundleIds) {
         final List<InvoiceItem> result = new ArrayList<InvoiceItem>();
         for (final UUID id : bundleIds) {
@@ -95,9 +93,6 @@ public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator
         invoices.add(createInvoice(now.plusDays(3), new BigDecimal("1000.00"), createInvoiceItems(new UUID[]{thisBundleId})));
         invoices.add(createInvoice(now.plusDays(4), new BigDecimal("10000.00"), createInvoiceItems(new UUID[]{thatBundleId, thisBundleId})));
 
-        final Clock clock = new ClockMock();
-        final InvoiceInternalApi invoiceApi = Mockito.mock(InvoiceInternalApi.class);
-        final EntitlementInternalApi entitlementApi = Mockito.mock(EntitlementInternalApi.class);
         Mockito.when(invoiceApi.getUnpaidInvoicesByAccountId(Mockito.<UUID>any(), Mockito.<LocalDate>any(), Mockito.<InternalTenantContext>any())).thenReturn(Collections2.filter(invoices, new Predicate<Invoice>() {
             @Override
             public boolean apply(@Nullable final Invoice invoice) {
@@ -126,15 +121,12 @@ public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator
         invoices.add(createInvoice(now.minusDays(2), new BigDecimal("1000.00"), createInvoiceItems(new UUID[]{thisBundleId})));
         invoices.add(createInvoice(now.minusDays(1), new BigDecimal("10000.00"), createInvoiceItems(new UUID[]{thatBundleId, thisBundleId})));
 
-        final Clock clock = new ClockMock();
-        final InvoiceInternalApi invoiceApi = Mockito.mock(InvoiceInternalApi.class);
         Mockito.when(invoiceApi.getUnpaidInvoicesByAccountId(Mockito.<UUID>any(), Mockito.<LocalDate>any(), Mockito.<InternalTenantContext>any())).thenReturn(invoices);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
         Mockito.when(bundle.getId()).thenReturn(thisBundleId);
         Mockito.when(bundle.getAccountId()).thenReturn(UUID.randomUUID());
 
-        final EntitlementInternalApi entitlementApi = Mockito.mock(EntitlementInternalApi.class);
         final Subscription subscription = Mockito.mock(Subscription.class);
         Mockito.when(entitlementApi.getBaseSubscription(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(subscription);
 
@@ -144,9 +136,7 @@ public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator
         Mockito.when(subscription.getCurrentPriceList()).thenReturn(pricelist);
         Mockito.when(subscription.getCurrentPhase()).thenReturn(plan.getFinalPhase());
 
-        final BillingStateCalculatorBundle calc = new BillingStateCalculatorBundle(entitlementApi, invoiceApi, accountApi, clock);
-
-        final BillingStateBundle state = calc.calculateBillingState(bundle, internalCallContext);
+        final BillingStateBundle state = calculatorBundle.calculateBillingState(bundle, internalCallContext);
 
         Assert.assertEquals(state.getNumberOfUnpaidInvoices(), 4);
         Assert.assertEquals(state.getBalanceOfUnpaidInvoices().intValue(), 11100);
@@ -157,7 +147,6 @@ public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator
         Assert.assertEquals(state.getBasePlanPhaseType(), plan.getFinalPhase().getPhaseType());
         Assert.assertEquals(state.getBasePlanPriceList(), pricelist);
         Assert.assertEquals(state.getBasePlanProduct(), plan.getProduct());
-
     }
 
     @Test(groups = "fast")
@@ -167,15 +156,12 @@ public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator
         now = new LocalDate();
         final List<Invoice> invoices = new ArrayList<Invoice>(5);
 
-        final Clock clock = new ClockMock();
-        final InvoiceInternalApi invoiceApi = Mockito.mock(InvoiceInternalApi.class);
         Mockito.when(invoiceApi.getUnpaidInvoicesByAccountId(Mockito.<UUID>any(), Mockito.<LocalDate>any(), Mockito.<InternalTenantContext>any())).thenReturn(invoices);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
         Mockito.when(bundle.getId()).thenReturn(thisBundleId);
         Mockito.when(bundle.getAccountId()).thenReturn(UUID.randomUUID());
 
-        final EntitlementInternalApi entitlementApi = Mockito.mock(EntitlementInternalApi.class);
         final Subscription subscription = Mockito.mock(Subscription.class);
         Mockito.when(entitlementApi.getBaseSubscription(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(subscription);
 
@@ -185,9 +171,7 @@ public class TestBillingStateCalculatorBundle extends TestBillingStateCalculator
         Mockito.when(subscription.getCurrentPriceList()).thenReturn(pricelist);
         Mockito.when(subscription.getCurrentPhase()).thenReturn(plan.getFinalPhase());
 
-        final BillingStateCalculatorBundle calc = new BillingStateCalculatorBundle(entitlementApi, invoiceApi, accountApi, clock);
-
-        final BillingStateBundle state = calc.calculateBillingState(bundle, internalCallContext);
+        final BillingStateBundle state = calculatorBundle.calculateBillingState(bundle, internalCallContext);
 
         Assert.assertEquals(state.getNumberOfUnpaidInvoices(), 0);
         Assert.assertEquals(state.getBalanceOfUnpaidInvoices().intValue(), 0);
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/io/TestReadConfig.java b/overdue/src/test/java/com/ning/billing/overdue/config/io/TestReadConfig.java
index efc1660..f194fd8 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/io/TestReadConfig.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/io/TestReadConfig.java
@@ -18,12 +18,14 @@ package com.ning.billing.overdue.config.io;
 
 import org.testng.annotations.Test;
 
-import com.google.common.io.Resources;
-import com.ning.billing.overdue.OverdueTestSuite;
+import com.ning.billing.overdue.OverdueTestSuiteNoDB;
 import com.ning.billing.overdue.config.OverdueConfig;
 import com.ning.billing.util.config.catalog.XMLLoader;
 
-public class TestReadConfig extends OverdueTestSuite {
+import com.google.common.io.Resources;
+
+public class TestReadConfig extends OverdueTestSuiteNoDB {
+
     @Test(groups = "fast")
     public void testConfigLoad() throws Exception {
         XMLLoader.getObjectFromString(Resources.getResource("OverdueConfig.xml").toExternalForm(), OverdueConfig.class);
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java b/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java
index 1452d9e..8c7e8bc 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueRules.java
@@ -16,11 +16,10 @@
 
 package com.ning.billing.overdue.config;
 
-
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 
-
 public class MockOverdueRules extends OverdueConfig {
+
     public static final String CLEAR_STATE = "Clear";
 
     @SuppressWarnings("unchecked")
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueStatesBundle.java b/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueStatesBundle.java
index 3519b7d..93c0fa4 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueStatesBundle.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/MockOverdueStatesBundle.java
@@ -21,11 +21,9 @@ import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 public class MockOverdueStatesBundle extends OverdueStatesBundle {
 
     public MockOverdueStatesBundle() {
-
     }
 
     public MockOverdueStatesBundle(final DefaultOverdueState<SubscriptionBundle>[] states) {
         setBundleOverdueStates(states);
     }
-
 }
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/TestCondition.java b/overdue/src/test/java/com/ning/billing/overdue/config/TestCondition.java
index 5f3542b..1a75d33 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/TestCondition.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/TestCondition.java
@@ -30,24 +30,20 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.ObjectType;
 import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.overdue.OverdueTestSuite;
+import com.ning.billing.overdue.OverdueTestSuiteNoDB;
 import com.ning.billing.overdue.config.api.BillingState;
 import com.ning.billing.overdue.config.api.PaymentResponse;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.ClockMock;
 import com.ning.billing.util.config.catalog.XMLLoader;
 import com.ning.billing.util.tag.ControlTagType;
 import com.ning.billing.util.tag.DefaultControlTag;
 import com.ning.billing.util.tag.DescriptiveTag;
 import com.ning.billing.util.tag.Tag;
 
-public class TestCondition extends OverdueTestSuite {
+public class TestCondition extends OverdueTestSuiteNoDB {
 
     @XmlRootElement(name = "condition")
     private static class MockCondition extends DefaultCondition<Blockable> {}
 
-    private Clock clock = new ClockMock();
-
     @Test(groups = "fast")
     public void testNumberOfUnpaidInvoicesEqualsOrExceeds() throws Exception {
         final String xml =
@@ -157,8 +153,8 @@ public class TestCondition extends OverdueTestSuite {
         final UUID objectId = new UUID(0L, 1L);
         final BillingState<Blockable> state0 = new BillingState<Blockable>(objectId, 0, BigDecimal.ZERO, null,
                                                                            DateTimeZone.UTC, unpaidInvoiceId, PaymentResponse.LOST_OR_STOLEN_CARD,
-                                                                           new Tag[]{new DefaultControlTag( ControlTagType.AUTO_INVOICING_OFF, objectType, objectId, clock.getUTCNow()),
-                                                                                   new DescriptiveTag(UUID.randomUUID(), objectType, objectId, clock.getUTCNow())});
+                                                                           new Tag[]{new DefaultControlTag(ControlTagType.AUTO_INVOICING_OFF, objectType, objectId, clock.getUTCNow()),
+                                                                                     new DescriptiveTag(UUID.randomUUID(), objectType, objectId, clock.getUTCNow())});
 
         final BillingState<Blockable> state1 = new BillingState<Blockable>(objectId, 1, new BigDecimal("100.00"), now.minusDays(10),
                                                                            DateTimeZone.UTC, unpaidInvoiceId, PaymentResponse.INSUFFICIENT_FUNDS,
diff --git a/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java b/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java
index 47043c4..c16d9c0 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/config/TestOverdueConfig.java
@@ -23,10 +23,10 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.overdue.EmailNotification;
-import com.ning.billing.overdue.OverdueTestSuite;
+import com.ning.billing.overdue.OverdueTestSuiteNoDB;
 import com.ning.billing.util.config.catalog.XMLLoader;
 
-public class TestOverdueConfig extends OverdueTestSuite {
+public class TestOverdueConfig extends OverdueTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testParseConfig() throws Exception {
diff --git a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java
new file mode 100644
index 0000000..e5a4cca
--- /dev/null
+++ b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2010-2013 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.overdue.glue;
+
+import java.util.Properties;
+
+import org.skife.config.ConfigSource;
+import org.skife.config.SimplePropertyConfigSource;
+
+import com.ning.billing.mock.glue.MockAccountModule;
+import com.ning.billing.mock.glue.MockEntitlementModule;
+import com.ning.billing.mock.glue.MockInvoiceModule;
+import com.ning.billing.mock.glue.MockTagModule;
+import com.ning.billing.overdue.TestOverdueHelper;
+import com.ning.billing.overdue.applicator.OverdueBusListenerTester;
+import com.ning.billing.util.email.EmailModule;
+import com.ning.billing.util.email.templates.TemplateModule;
+import com.ning.billing.util.glue.AuditModule;
+import com.ning.billing.util.glue.CacheModule;
+import com.ning.billing.util.glue.CallContextModule;
+import com.ning.billing.util.glue.CustomFieldModule;
+
+public class TestOverdueModule extends DefaultOverdueModule {
+
+    protected final ConfigSource configSource;
+
+    public TestOverdueModule() {
+        final Properties properties = new Properties(System.getProperties());
+        // Speed up the bus
+        properties.put("killbill.billing.util.persistent.bus.sleep", "10");
+        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
+        configSource = new SimplePropertyConfigSource(properties);
+
+        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
+        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    }
+
+    @Override
+    protected void configure() {
+        super.configure();
+
+        install(new AuditModule());
+        install(new CacheModule());
+        install(new CallContextModule());
+        install(new CustomFieldModule());
+        install(new EmailModule());
+        install(new MockAccountModule());
+        install(new MockEntitlementModule());
+        install(new MockInvoiceModule());
+        install(new MockTagModule());
+        install(new TemplateModule());
+
+        // We can't use the dumb mocks in MockJunctionModule here
+        install(new ApplicatorMockJunctionModule());
+
+        bind(OverdueBusListenerTester.class).asEagerSingleton();
+        bind(TestOverdueHelper.class).asEagerSingleton();
+    }
+}
diff --git a/overdue/src/test/java/com/ning/billing/overdue/notification/MockOverdueCheckNotifier.java b/overdue/src/test/java/com/ning/billing/overdue/notification/MockOverdueCheckNotifier.java
index a427ddb..2aa6c71 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/notification/MockOverdueCheckNotifier.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/notification/MockOverdueCheckNotifier.java
@@ -19,6 +19,7 @@ package com.ning.billing.overdue.notification;
 import com.ning.billing.ovedue.notification.OverdueCheckNotifier;
 
 public class MockOverdueCheckNotifier implements OverdueCheckNotifier {
+
     @Override
     public void initialize() {
         // do nothing
diff --git a/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueCheckNotifier.java b/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueCheckNotifier.java
index 7b21af7..4ac3149 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueCheckNotifier.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueCheckNotifier.java
@@ -16,91 +16,42 @@
 
 package com.ning.billing.overdue.notification;
 
-import java.io.IOException;
-import java.sql.SQLException;
 import java.util.UUID;
 import java.util.concurrent.Callable;
 
 import org.joda.time.DateTime;
 import org.mockito.Mockito;
-import org.skife.config.ConfigurationObjectFactory;
-import org.skife.jdbi.v2.IDBI;
 import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.AccountApiException;
-import com.ning.billing.catalog.DefaultCatalogService;
-import com.ning.billing.catalog.api.CatalogService;
-import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.lifecycle.KillbillService.ServiceException;
-import com.ning.billing.mock.glue.MockInvoiceModule;
-import com.ning.billing.mock.glue.MockJunctionModule;
-import com.ning.billing.mock.glue.MockPaymentModule;
 import com.ning.billing.ovedue.notification.DefaultOverdueCheckNotifier;
-import com.ning.billing.ovedue.notification.DefaultOverdueCheckPoster;
 import com.ning.billing.ovedue.notification.OverdueCheckNotificationKey;
-import com.ning.billing.ovedue.notification.OverdueCheckPoster;
-import com.ning.billing.overdue.OverdueProperties;
+import com.ning.billing.ovedue.notification.OverdueCheckNotifier;
 import com.ning.billing.overdue.OverdueTestSuiteWithEmbeddedDB;
-import com.ning.billing.overdue.glue.DefaultOverdueModule;
 import com.ning.billing.overdue.listener.OverdueListener;
-import com.ning.billing.util.cache.CacheControllerDispatcher;
-import com.ning.billing.util.callcontext.CallContextFactory;
-import com.ning.billing.util.callcontext.DefaultCallContextFactory;
 import com.ning.billing.util.callcontext.InternalCallContextFactory;
 import com.ning.billing.util.callcontext.InternalTenantContext;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.ClockMock;
-import com.ning.billing.util.config.CatalogConfig;
-import com.ning.billing.util.config.InvoiceConfig;
-import com.ning.billing.util.customfield.dao.CustomFieldDao;
-import com.ning.billing.util.customfield.dao.DefaultCustomFieldDao;
-import com.ning.billing.util.dao.DefaultNonEntityDao;
-import com.ning.billing.util.dao.NonEntityDao;
-import com.ning.billing.util.email.EmailModule;
-import com.ning.billing.util.email.templates.TemplateModule;
-import com.ning.billing.util.globallocker.GlobalLocker;
-import com.ning.billing.util.globallocker.MySqlGlobalLocker;
-import com.ning.billing.util.glue.BusModule;
-import com.ning.billing.util.glue.CacheModule;
-import com.ning.billing.util.glue.NonEntityDaoModule;
-import com.ning.billing.util.glue.NotificationQueueModule;
-import com.ning.billing.util.glue.TagStoreModule;
-import com.ning.billing.util.notificationq.NotificationQueueService;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-import com.ning.billing.util.svcsapi.bus.InternalBus;
-import com.ning.billing.util.tag.dao.DefaultTagDao;
-import com.ning.billing.util.tag.dao.TagDao;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Stage;
 
 import static com.jayway.awaitility.Awaitility.await;
-import static java.util.concurrent.TimeUnit.MINUTES;
+import static java.util.concurrent.TimeUnit.SECONDS;
 
 public class TestOverdueCheckNotifier extends OverdueTestSuiteWithEmbeddedDB {
 
-    private Clock clock;
-    private DefaultOverdueCheckNotifier notifier;
-
-    private InternalBus eventBus;
-    private OverdueListenerMock listener;
-    private NotificationQueueService notificationQueueService;
+    private OverdueListenerMock mockListener;
+    private OverdueCheckNotifier notifierForMock;
 
     private static final class OverdueListenerMock extends OverdueListener {
 
         int eventCount = 0;
         UUID latestSubscriptionId = null;
 
-        public OverdueListenerMock() {
-            super(null, new InternalCallContextFactory(new ClockMock(), new DefaultNonEntityDao(getDBI()), new CacheControllerDispatcher()));
+        public OverdueListenerMock(final InternalCallContextFactory internalCallContextFactory) {
+            super(null, internalCallContextFactory);
         }
 
         @Override
@@ -118,61 +69,30 @@ public class TestOverdueCheckNotifier extends OverdueTestSuiteWithEmbeddedDB {
         }
     }
 
-    @BeforeClass(groups = "slow")
-    public void setup() throws ServiceException, IOException, ClassNotFoundException, SQLException, EntitlementUserApiException, AccountApiException {
-        final Injector g = Guice.createInjector(Stage.PRODUCTION, new MockInvoiceModule(), new MockPaymentModule(), new BusModule(), new TagStoreModule(),
-                                                new DefaultOverdueModule() {
-            @Override
-            protected void configure() {
-                super.configure();
-                bind(Clock.class).to(ClockMock.class).asEagerSingleton();
-                bind(CallContextFactory.class).to(DefaultCallContextFactory.class).asEagerSingleton();
-                final InvoiceConfig invoiceConfig = new ConfigurationObjectFactory(System.getProperties()).build(InvoiceConfig.class);
-                bind(InvoiceConfig.class).toInstance(invoiceConfig);
-                final CatalogConfig catalogConfig = new ConfigurationObjectFactory(System.getProperties()).build(CatalogConfig.class);
-                bind(CatalogConfig.class).toInstance(catalogConfig);
-                bind(CatalogService.class).to(DefaultCatalogService.class).asEagerSingleton();
-                final IDBI dbi = getDBI();
-                bind(IDBI.class).toInstance(dbi);
-                bind(TagDao.class).to(DefaultTagDao.class).asEagerSingleton();
-                bind(CustomFieldDao.class).to(DefaultCustomFieldDao.class).asEagerSingleton();
-                bind(GlobalLocker.class).to(MySqlGlobalLocker.class).asEagerSingleton();
-                install(new MockJunctionModule());
-                install(new EmailModule());
-                install(new TemplateModule());
-                install(new NotificationQueueModule());
-                install(new CacheModule());
-                install(new NonEntityDaoModule());
-                final AccountInternalApi accountApi = Mockito.mock(AccountInternalApi.class);
-                bind(AccountInternalApi.class).toInstance(accountApi);
-
-                final EntitlementInternalApi entitlementApi = Mockito.mock(EntitlementInternalApi.class);
-                bind(EntitlementInternalApi.class).toInstance(entitlementApi);
-            }
-        });
-
-        clock = g.getInstance(Clock.class);
-
-        eventBus = g.getInstance(InternalBus.class);
-        notificationQueueService = g.getInstance(NotificationQueueService.class);
-
-        final OverdueProperties properties = g.getInstance(OverdueProperties.class);
+    @Override
+    @BeforeMethod(groups = "slow")
+    public void setupTest() throws Exception {
+        // We override the parent method on purpose, because we want to register a different DefaultOverdueCheckNotifier
 
         final Account account = Mockito.mock(Account.class);
-        final AccountInternalApi accountApi = g.getInstance(AccountInternalApi.class);
         Mockito.when(accountApi.getAccountById(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(account);
 
         final Subscription subscription = Mockito.mock(Subscription.class);
-        final EntitlementInternalApi entitlementApi = g.getInstance(EntitlementInternalApi.class);
         Mockito.when(entitlementApi.getSubscriptionFromId(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(subscription);
 
-        listener = new OverdueListenerMock();
-        notifier = new DefaultOverdueCheckNotifier(notificationQueueService,
-                                                   properties, listener);
+        mockListener = new OverdueListenerMock(internalCallContextFactory);
+        notifierForMock = new DefaultOverdueCheckNotifier(notificationQueueService, overdueProperties, mockListener);
+
+        bus.start();
+        notifierForMock.initialize();
+        notifierForMock.start();
+    }
 
-        eventBus.start();
-        notifier.initialize();
-        notifier.start();
+    @Override
+    @AfterMethod(groups = "slow")
+    public void cleanupTest() throws Exception {
+        notifierForMock.stop();
+        bus.stop();
     }
 
     @Test(groups = "slow")
@@ -180,29 +100,22 @@ public class TestOverdueCheckNotifier extends OverdueTestSuiteWithEmbeddedDB {
         final UUID subscriptionId = new UUID(0L, 1L);
         final Blockable blockable = Mockito.mock(Subscription.class);
         Mockito.when(blockable.getId()).thenReturn(subscriptionId);
-        final DateTime now = new DateTime();
+        final DateTime now = clock.getUTCNow();
         final DateTime readyTime = now.plusMillis(2000);
-        final OverdueCheckPoster poster = new DefaultOverdueCheckPoster(notificationQueueService);
 
         poster.insertOverdueCheckNotification(blockable, readyTime, internalCallContext);
 
         // Move time in the future after the notification effectiveDate
-        ((ClockMock) clock).setDeltaFromReality(3000);
+        clock.setDeltaFromReality(3000);
 
-        await().atMost(1, MINUTES).until(new Callable<Boolean>() {
+        await().atMost(5, SECONDS).until(new Callable<Boolean>() {
             @Override
             public Boolean call() throws Exception {
-                return listener.getEventCount() == 1;
+                return mockListener.getEventCount() == 1;
             }
         });
 
-        Assert.assertEquals(listener.getEventCount(), 1);
-        Assert.assertEquals(listener.getLatestSubscriptionId(), subscriptionId);
-    }
-
-    @AfterClass(groups = "slow")
-    public void tearDown() {
-        eventBus.stop();
-        notifier.stop();
+        Assert.assertEquals(mockListener.getEventCount(), 1);
+        Assert.assertEquals(mockListener.getLatestSubscriptionId(), subscriptionId);
     }
 }
diff --git a/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java b/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java
index 183ffae..4e3bb8e 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java
@@ -13,9 +13,8 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  */
-package com.ning.billing.overdue.notification;
 
-import static org.testng.Assert.assertEquals;
+package com.ning.billing.overdue.notification;
 
 import java.util.UUID;
 
@@ -26,16 +25,16 @@ import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.ovedue.notification.OverdueCheckNotificationKey;
 import com.ning.billing.util.jackson.ObjectMapper;
 
-public class TestOverdueNotificationKeyJson {
+import static org.testng.Assert.assertEquals;
 
+public class TestOverdueNotificationKeyJson {
 
     private final ObjectMapper mapper = new ObjectMapper();
 
     @Test(groups = "fast")
     public void testOverdueNotificationKeyJson() throws Exception {
-
         final UUID uuid = UUID.randomUUID();
-        final Blockable.Type type  = Blockable.Type.SUBSCRIPTION;
+        final Blockable.Type type = Blockable.Type.SUBSCRIPTION;
 
         final OverdueCheckNotificationKey e = new OverdueCheckNotificationKey(uuid, type);
 
@@ -48,9 +47,8 @@ public class TestOverdueNotificationKeyJson {
 
     @Test(groups = "fast")
     public void testOverdueNotificationKeyJsonWithNoKey() throws Exception {
-
         final String uuidString = "bab0fca4-c628-4997-8980-14d6c3a98c48";
-        final String json = "{\"uuidKey\":\"" + uuidString +  "\"}";
+        final String json = "{\"uuidKey\":\"" + uuidString + "\"}";
 
         final Class<?> claz = Class.forName(OverdueCheckNotificationKey.class.getName());
         final OverdueCheckNotificationKey obj = (OverdueCheckNotificationKey) mapper.readValue(json, claz);
diff --git a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java
new file mode 100644
index 0000000..e92fd8d
--- /dev/null
+++ b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.overdue;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+
+import com.ning.billing.GuicyKillbillTestSuiteNoDB;
+import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.ovedue.notification.OverdueCheckNotifier;
+import com.ning.billing.ovedue.notification.OverdueCheckPoster;
+import com.ning.billing.overdue.applicator.OverdueBusListenerTester;
+import com.ning.billing.overdue.applicator.OverdueStateApplicator;
+import com.ning.billing.overdue.calculator.BillingStateCalculatorBundle;
+import com.ning.billing.overdue.glue.TestOverdueModuleNoDB;
+import com.ning.billing.overdue.service.DefaultOverdueService;
+import com.ning.billing.overdue.wrapper.OverdueWrapperFactory;
+import com.ning.billing.util.callcontext.InternalCallContextFactory;
+import com.ning.billing.util.notificationq.NotificationQueueService;
+import com.ning.billing.util.notificationq.NotificationQueueService.NotificationQueueAlreadyExists;
+import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
+import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
+import com.ning.billing.util.svcapi.junction.BlockingInternalApi;
+import com.ning.billing.util.svcsapi.bus.BusService;
+import com.ning.billing.util.svcsapi.bus.InternalBus;
+
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+public abstract class OverdueTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
+
+    @Inject
+    protected AccountInternalApi accountApi;
+    @Inject
+    protected BillingStateCalculatorBundle calculatorBundle;
+    @Inject
+    protected BlockingInternalApi blockingApi;
+    @Inject
+    protected BusService busService;
+    @Inject
+    protected DefaultOverdueService service;
+    @Inject
+    protected EntitlementInternalApi entitlementApi;
+    @Inject
+    protected InternalBus bus;
+    @Inject
+    protected InternalCallContextFactory internalCallContextFactory;
+    @Inject
+    protected InvoiceInternalApi invoiceApi;
+    @Inject
+    protected NotificationQueueService notificationQueueService;
+    @Inject
+    protected OverdueBusListenerTester listener;
+    @Inject
+    protected OverdueCheckNotifier notifier;
+    @Inject
+    protected OverdueCheckPoster poster;
+    @Inject
+    protected OverdueStateApplicator<SubscriptionBundle> applicator;
+    @Inject
+    protected OverdueUserApi overdueApi;
+    @Inject
+    protected OverdueProperties overdueProperties;
+    @Inject
+    protected OverdueWrapperFactory overdueWrapperFactory;
+    @Inject
+    protected TestOverdueHelper testOverdueHelper;
+
+    @BeforeClass(groups = "fast")
+    protected void setup() throws Exception {
+        final Injector injector = Guice.createInjector(new TestOverdueModuleNoDB());
+        injector.injectMembers(this);
+    }
+
+    @BeforeMethod(groups = "fast")
+    public void setupTest() {
+        bus.start();
+
+        service.registerForBus();
+        try {
+            service.initialize();
+        } catch (RuntimeException e) {
+            if (!(e.getCause() instanceof NotificationQueueAlreadyExists)) {
+                throw e;
+            }
+        }
+        service.start();
+    }
+
+    @AfterMethod(groups = "fast")
+    public void cleanupTest() {
+        service.stop();
+        bus.stop();
+    }
+}
diff --git a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
index 17380be..d439e55 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
@@ -16,7 +16,92 @@
 
 package com.ning.billing.overdue;
 
-import com.ning.billing.KillbillTestSuiteWithEmbeddedDB;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
 
-public abstract class OverdueTestSuiteWithEmbeddedDB extends KillbillTestSuiteWithEmbeddedDB {
+import com.ning.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
+import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+import com.ning.billing.ovedue.notification.OverdueCheckNotifier;
+import com.ning.billing.ovedue.notification.OverdueCheckPoster;
+import com.ning.billing.overdue.applicator.OverdueBusListenerTester;
+import com.ning.billing.overdue.applicator.OverdueStateApplicator;
+import com.ning.billing.overdue.calculator.BillingStateCalculatorBundle;
+import com.ning.billing.overdue.glue.TestOverdueModuleWithEmbeddedDB;
+import com.ning.billing.overdue.service.DefaultOverdueService;
+import com.ning.billing.overdue.wrapper.OverdueWrapperFactory;
+import com.ning.billing.util.callcontext.InternalCallContextFactory;
+import com.ning.billing.util.notificationq.NotificationQueueService;
+import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
+import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
+import com.ning.billing.util.svcapi.junction.BlockingInternalApi;
+import com.ning.billing.util.svcsapi.bus.BusService;
+import com.ning.billing.util.svcsapi.bus.InternalBus;
+
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+public abstract class OverdueTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbeddedDB {
+
+    @Inject
+    protected AccountInternalApi accountApi;
+    @Inject
+    protected BillingStateCalculatorBundle calculatorBundle;
+    @Inject
+    protected BlockingInternalApi blockingApi;
+    @Inject
+    protected BusService busService;
+    @Inject
+    protected DefaultOverdueService service;
+    @Inject
+    protected EntitlementInternalApi entitlementApi;
+    @Inject
+    protected InternalBus bus;
+    @Inject
+    protected InternalCallContextFactory internalCallContextFactory;
+    @Inject
+    protected InvoiceInternalApi invoiceApi;
+    @Inject
+    protected NotificationQueueService notificationQueueService;
+    @Inject
+    protected OverdueBusListenerTester listener;
+    @Inject
+    protected OverdueCheckNotifier notifier;
+    @Inject
+    protected OverdueCheckPoster poster;
+    @Inject
+    protected OverdueStateApplicator<SubscriptionBundle> applicator;
+    @Inject
+    protected OverdueUserApi overdueApi;
+    @Inject
+    protected OverdueProperties overdueProperties;
+    @Inject
+    protected OverdueWrapperFactory overdueWrapperFactory;
+    @Inject
+    protected TestOverdueHelper testOverdueHelper;
+
+    @BeforeClass(groups = "slow")
+    protected void setup() throws Exception {
+        final Injector injector = Guice.createInjector(new TestOverdueModuleWithEmbeddedDB());
+        injector.injectMembers(this);
+    }
+
+    @BeforeMethod(groups = "slow")
+    public void setupTest() throws Exception {
+        bus.register(listener);
+        bus.start();
+
+        // The service will initialize and start the notifier
+        service.registerForBus();
+        service.initialize();
+        service.start();
+    }
+
+    @AfterMethod(groups = "slow")
+    public void cleanupTest() throws Exception {
+        service.stop();
+        bus.stop();
+    }
 }
diff --git a/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java b/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java
index d2aad4d..0a23fde 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/wrapper/TestOverdueWrapper.java
@@ -24,16 +24,17 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.overdue.OverdueState;
-import com.ning.billing.overdue.OverdueTestBase;
+import com.ning.billing.overdue.OverdueTestSuiteWithEmbeddedDB;
 import com.ning.billing.overdue.config.OverdueConfig;
 import com.ning.billing.util.config.catalog.XMLLoader;
 import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
 
-public class TestOverdueWrapper extends OverdueTestBase {
+public class TestOverdueWrapper extends OverdueTestSuiteWithEmbeddedDB {
+
     @Test(groups = "slow")
     public void testWrapperBasic() throws Exception {
-        final InputStream is = new ByteArrayInputStream(configXml.getBytes());
-        config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
+        final InputStream is = new ByteArrayInputStream(testOverdueHelper.getConfigXml().getBytes());
+        final OverdueConfig config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
         overdueWrapperFactory.setOverdueConfig(config);
 
         SubscriptionBundle bundle;
@@ -41,22 +42,22 @@ public class TestOverdueWrapper extends OverdueTestBase {
         OverdueState<SubscriptionBundle> state;
 
         state = config.getBundleStateSet().findState("OD1");
-        bundle = createBundle(clock.getUTCToday().minusDays(31));
+        bundle = testOverdueHelper.createBundle(clock.getUTCToday().minusDays(31));
         wrapper = overdueWrapperFactory.createOverdueWrapperFor(bundle);
         wrapper.refresh(internalCallContext);
-        checkStateApplied(state);
+        testOverdueHelper.checkStateApplied(state);
 
         state = config.getBundleStateSet().findState("OD2");
-        bundle = createBundle(clock.getUTCToday().minusDays(41));
+        bundle = testOverdueHelper.createBundle(clock.getUTCToday().minusDays(41));
         wrapper = overdueWrapperFactory.createOverdueWrapperFor(bundle);
         wrapper.refresh(internalCallContext);
-        checkStateApplied(state);
+        testOverdueHelper.checkStateApplied(state);
 
         state = config.getBundleStateSet().findState("OD3");
-        bundle = createBundle(clock.getUTCToday().minusDays(51));
+        bundle = testOverdueHelper.createBundle(clock.getUTCToday().minusDays(51));
         wrapper = overdueWrapperFactory.createOverdueWrapperFor(bundle);
         wrapper.refresh(internalCallContext);
-        checkStateApplied(state);
+        testOverdueHelper.checkStateApplied(state);
     }
 
     @Test(groups = "slow")
@@ -67,10 +68,10 @@ public class TestOverdueWrapper extends OverdueTestBase {
         final OverdueWrapper<SubscriptionBundle> wrapper;
         final OverdueState<SubscriptionBundle> state;
 
-        final InputStream is = new ByteArrayInputStream(configXml.getBytes());
-        config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
+        final InputStream is = new ByteArrayInputStream(testOverdueHelper.getConfigXml().getBytes());
+        final OverdueConfig config = XMLLoader.getObjectFromStreamNoValidation(is, OverdueConfig.class);
         state = config.getBundleStateSet().findState(DefaultBlockingState.CLEAR_STATE_NAME);
-        bundle = createBundle(clock.getUTCToday().minusDays(31));
+        bundle = testOverdueHelper.createBundle(clock.getUTCToday().minusDays(31));
         wrapper = overdueWrapperFactory.createOverdueWrapperFor(bundle);
         final OverdueState<SubscriptionBundle> result = wrapper.refresh(internalCallContext);