Details
diff --git a/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java b/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
index 8fbecb4..911b2f1 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
@@ -151,15 +151,12 @@ public class InvoiceDispatcher {
final boolean dryRun, final CallContext context) throws InvoiceApiException {
try {
- // API_FIX
- // Make sure to first set the BCD if needed then get the account object (to have the BCD set)
- final InternalCallContext internalCallContextNoAccounrRecordId = internalCallContextFactory.createInternalCallContext(context);
- final BillingEventSet billingEvents = billingApi.getBillingEventsForAccountAndUpdateAccountBCD(accountId, internalCallContextNoAccounrRecordId);
-
- final Account account = accountApi.getAccountById(accountId, internalCallContextNoAccounrRecordId);
+ final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(accountId, context);
- final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(account.getId(), context);
+ // Make sure to first set the BCD if needed then get the account object (to have the BCD set)
+ final BillingEventSet billingEvents = billingApi.getBillingEventsForAccountAndUpdateAccountBCD(accountId, internalCallContext);
+ final Account account = accountApi.getAccountById(accountId, internalCallContext);
List<Invoice> invoices = new ArrayList<Invoice>();
if (!billingEvents.isAccountAutoInvoiceOff()) {
invoices = invoiceDao.getInvoicesByAccount(accountId, internalCallContextFactory.createInternalTenantContext(account.getId(), context)); //no need to fetch, invoicing is off on this account
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/migration/InvoiceApiTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/api/migration/InvoiceApiTestBase.java
index e1b7176..ec5c31d 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/migration/InvoiceApiTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/migration/InvoiceApiTestBase.java
@@ -50,15 +50,17 @@ import com.ning.billing.invoice.notification.NullInvoiceNotifier;
import com.ning.billing.invoice.tests.InvoicingTestBase;
import com.ning.billing.mock.api.MockBillCycleDay;
import com.ning.billing.util.api.TagUserApi;
-import com.ning.billing.util.svcsapi.bus.BusService;
import com.ning.billing.util.bus.DefaultBusService;
+import com.ning.billing.util.callcontext.InternalCallContext;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.globallocker.GlobalLocker;
import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
import com.ning.billing.util.svcapi.junction.BillingEventSet;
import com.ning.billing.util.svcapi.junction.BillingInternalApi;
import com.ning.billing.util.svcapi.junction.BillingModeType;
+import com.ning.billing.util.svcsapi.bus.BusService;
import com.google.inject.Inject;
@@ -86,6 +88,9 @@ public abstract class InvoiceApiTestBase extends InvoicingTestBase {
protected AccountInternalApi accountApi;
@Inject
+ protected EntitlementInternalApi entitlementApi;
+
+ @Inject
protected BusService busService;
@Inject
@@ -131,10 +136,10 @@ public abstract class InvoiceApiTestBase extends InvoicingTestBase {
fixedPrice, BigDecimal.ONE, currency, BillingPeriod.MONTHLY, 1,
BillingModeType.IN_ADVANCE, "", 1L, SubscriptionTransitionType.CREATE));
- Mockito.when(billingApi.getBillingEventsForAccountAndUpdateAccountBCD(account.getId(), internalCallContext)).thenReturn(events);
+ Mockito.when(billingApi.getBillingEventsForAccountAndUpdateAccountBCD(Mockito.<UUID>any(), Mockito.<InternalCallContext>any())).thenReturn(events);
final InvoiceNotifier invoiceNotifier = new NullInvoiceNotifier();
- final InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountApi, billingApi, null,
+ final InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountApi, billingApi, entitlementApi,
invoiceDao, invoiceNotifier, locker, busService.getBus(),
clock, internalCallContextFactory);
@@ -156,7 +161,7 @@ public abstract class InvoiceApiTestBase extends InvoicingTestBase {
protected Account createAccount() throws AccountApiException {
final UUID accountId = UUID.randomUUID();
final Account account = Mockito.mock(Account.class);
- Mockito.when(accountApi.getAccountById(accountId, internalCallContext)).thenReturn(account);
+ Mockito.when(accountApi.getAccountById(Mockito.<UUID>any(), Mockito.<InternalCallContext>any())).thenReturn(account);
Mockito.when(account.getCurrency()).thenReturn(accountCurrency);
Mockito.when(account.getId()).thenReturn(accountId);
Mockito.when(account.isNotifiedForInvoices()).thenReturn(true);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
index 8fee0ec..0942b5a 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
@@ -16,6 +16,8 @@
package com.ning.billing.invoice.glue;
+import static org.testng.Assert.assertNotNull;
+
import java.io.IOException;
import java.net.URL;
@@ -23,7 +25,6 @@ import org.mockito.Mockito;
import org.skife.jdbi.v2.IDBI;
import com.ning.billing.KillbillTestSuiteWithEmbeddedDB;
-import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.catalog.glue.CatalogModule;
import com.ning.billing.dbi.MysqlTestingHelper;
import com.ning.billing.invoice.api.InvoiceNotifier;
@@ -44,10 +45,9 @@ import com.ning.billing.util.glue.GlobalLockerModule;
import com.ning.billing.util.glue.TagStoreModule;
import com.ning.billing.util.notificationq.MockNotificationQueueService;
import com.ning.billing.util.notificationq.NotificationQueueService;
+import com.ning.billing.util.svcapi.account.AccountInternalApi;
import com.ning.billing.util.svcapi.junction.BillingInternalApi;
-import static org.testng.Assert.assertNotNull;
-
public class InvoiceModuleWithEmbeddedDb extends DefaultInvoiceModule {
private final MysqlTestingHelper helper = KillbillTestSuiteWithEmbeddedDB.getMysqlTestingHelper();
@@ -75,7 +75,7 @@ public class InvoiceModuleWithEmbeddedDb extends DefaultInvoiceModule {
install(new TagStoreModule());
installNotificationQueue();
- bind(AccountUserApi.class).toInstance(Mockito.mock(AccountUserApi.class));
+ bind(AccountInternalApi.class).toInstance(Mockito.mock(AccountInternalApi.class));
final BillingInternalApi billingApi = Mockito.mock(BillingInternalApi.class);
bind(BillingInternalApi.class).toInstance(billingApi);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
index 4b15dc3..b8b1a94 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
@@ -16,13 +16,15 @@
package com.ning.billing.invoice;
+import static org.testng.Assert.assertNotNull;
+
import java.io.IOException;
import java.net.URL;
+import org.mockito.Mockito;
import org.skife.config.ConfigurationObjectFactory;
import org.skife.jdbi.v2.IDBI;
-import com.google.inject.AbstractModule;
import com.ning.billing.KillbillTestSuiteWithEmbeddedDB;
import com.ning.billing.catalog.glue.CatalogModule;
import com.ning.billing.dbi.DBIProvider;
@@ -35,6 +37,7 @@ import com.ning.billing.invoice.template.formatters.DefaultInvoiceFormatterFacto
import com.ning.billing.mock.glue.MockJunctionModule;
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.clock.Clock;
import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.email.EmailModule;
@@ -44,16 +47,19 @@ import com.ning.billing.util.glue.CustomFieldModule;
import com.ning.billing.util.glue.GlobalLockerModule;
import com.ning.billing.util.glue.NotificationQueueModule;
import com.ning.billing.util.glue.TagStoreModule;
+import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-import static org.testng.Assert.assertNotNull;
+import com.google.inject.AbstractModule;
public class MockModule extends AbstractModule {
@Override
protected void configure() {
loadSystemPropertiesFromClasspath("/resource.properties");
- bind(Clock.class).to(ClockMock.class).asEagerSingleton();
- bind(ClockMock.class).asEagerSingleton();
+ final ClockMock clock = new ClockMock();
+ bind(Clock.class).toInstance(clock);
+ bind(ClockMock.class).toInstance(clock);
bind(CallContextFactory.class).to(DefaultCallContextFactory.class).asEagerSingleton();
install(new TagStoreModule());
install(new CustomFieldModule());
@@ -69,8 +75,14 @@ public class MockModule extends AbstractModule {
bind(IDBI.class).toInstance(dbi);
}
+ final InternalCallContextFactory internalCallContextFactory = new InternalCallContextFactory(helper.getDBI(), clock);
+ bind(InternalCallContextFactory.class).toInstance(internalCallContextFactory);
+
bind(InvoiceFormatterFactory.class).to(DefaultInvoiceFormatterFactory.class).asEagerSingleton();
+ bind(AccountInternalApi.class).toInstance(Mockito.mock(AccountInternalApi.class));
+ bind(EntitlementInternalApi.class).toInstance(Mockito.mock(EntitlementInternalApi.class));
+
install(new EmailModule());
install(new GlobalLockerModule());
install(new NotificationQueueModule());
diff --git a/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java b/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java
index 9f3c2f9..1dec97e 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/notification/TestNextBillingDateNotifier.java
@@ -46,11 +46,11 @@ import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.invoice.InvoiceDispatcher;
import com.ning.billing.invoice.InvoiceListener;
import com.ning.billing.invoice.InvoiceTestSuiteWithEmbeddedDB;
+import com.ning.billing.invoice.api.formatters.InvoiceFormatterFactory;
import com.ning.billing.invoice.glue.InvoiceModuleWithMocks;
+import com.ning.billing.invoice.template.formatters.DefaultInvoiceFormatterFactory;
import com.ning.billing.lifecycle.KillbillService;
-import com.ning.billing.mock.glue.MockClockModule;
import com.ning.billing.mock.glue.MockJunctionModule;
-import com.ning.billing.util.svcsapi.bus.Bus;
import com.ning.billing.util.callcontext.CallContextFactory;
import com.ning.billing.util.callcontext.DefaultCallContextFactory;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
@@ -64,13 +64,17 @@ import com.ning.billing.util.glue.NotificationQueueModule;
import com.ning.billing.util.glue.TagStoreModule;
import com.ning.billing.util.notificationq.DummySqlTest;
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.Bus;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
+
+
public class TestNextBillingDateNotifier extends InvoiceTestSuiteWithEmbeddedDB {
private Clock clock;
private DefaultNextBillingDateNotifier notifier;
@@ -78,6 +82,7 @@ public class TestNextBillingDateNotifier extends InvoiceTestSuiteWithEmbeddedDB
private Bus eventBus;
private InvoiceListenerMock listener;
private NotificationQueueService notificationQueueService;
+ private InternalCallContextFactory internalCallContextFactory;
private static final class InvoiceListenerMock extends InvoiceListener {
int eventCount = 0;
@@ -110,7 +115,11 @@ public class TestNextBillingDateNotifier extends InvoiceTestSuiteWithEmbeddedDB
final Injector g = Guice.createInjector(Stage.PRODUCTION, new AbstractModule() {
@Override
protected void configure() {
- install(new MockClockModule());
+
+ final ClockMock clock = new ClockMock();
+ bind(Clock.class).toInstance(clock);
+ bind(ClockMock.class).toInstance(clock);
+
install(new BusModule(BusType.MEMORY));
install(new InvoiceModuleWithMocks());
install(new MockJunctionModule());
@@ -129,6 +138,14 @@ public class TestNextBillingDateNotifier extends InvoiceTestSuiteWithEmbeddedDB
final IDBI dbi = helper.getDBI();
bind(IDBI.class).toInstance(dbi);
}
+
+ final InternalCallContextFactory internalCallContextFactory = new InternalCallContextFactory(helper.getDBI(), clock);
+ bind(InternalCallContextFactory.class).toInstance(internalCallContextFactory);
+
+ bind(InvoiceFormatterFactory.class).to(DefaultInvoiceFormatterFactory.class).asEagerSingleton();
+
+ bind(AccountInternalApi.class).toInstance(Mockito.mock(AccountInternalApi.class));
+ bind(EntitlementInternalApi.class).toInstance(Mockito.mock(EntitlementInternalApi.class));
}
});
@@ -145,9 +162,9 @@ public class TestNextBillingDateNotifier extends InvoiceTestSuiteWithEmbeddedDB
final CallContextFactory factory = new DefaultCallContextFactory(clock);
listener = new InvoiceListenerMock(factory, dispatcher);
- // API_FIX null
+ internalCallContextFactory = g.getInstance(InternalCallContextFactory.class);
notifier = new DefaultNextBillingDateNotifier(notificationQueueService, g.getInstance(InvoiceConfig.class), entitlementUserApi,
- listener, new InternalCallContextFactory(null, clock));
+ listener, internalCallContextFactory);
}
@Test(groups = "slow")
@@ -157,7 +174,7 @@ public class TestNextBillingDateNotifier extends InvoiceTestSuiteWithEmbeddedDB
final UUID subscriptionId = new UUID(0L, 1L);
final DateTime now = new DateTime();
final DateTime readyTime = now.plusMillis(2000);
- final NextBillingDatePoster poster = new DefaultNextBillingDatePoster(notificationQueueService, new InternalCallContextFactory(getMysqlTestingHelper().getDBI(), clock));
+ final NextBillingDatePoster poster = new DefaultNextBillingDatePoster(notificationQueueService, internalCallContextFactory);
eventBus.start();
notifier.initialize();
diff --git a/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java b/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java
index e6889a3..4ca9713 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/TestInvoiceDispatcher.java
@@ -54,16 +54,18 @@ import com.ning.billing.invoice.notification.NextBillingDateNotifier;
import com.ning.billing.invoice.notification.NullInvoiceNotifier;
import com.ning.billing.invoice.tests.InvoicingTestBase;
import com.ning.billing.mock.api.MockBillCycleDay;
-import com.ning.billing.util.svcsapi.bus.BusService;
import com.ning.billing.util.bus.DefaultBusService;
+import com.ning.billing.util.callcontext.InternalCallContext;
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.globallocker.GlobalLocker;
import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
import com.ning.billing.util.svcapi.junction.BillingEventSet;
import com.ning.billing.util.svcapi.junction.BillingInternalApi;
import com.ning.billing.util.svcapi.junction.BillingModeType;
+import com.ning.billing.util.svcsapi.bus.BusService;
import com.google.inject.Inject;
@@ -96,9 +98,16 @@ public class TestInvoiceDispatcher extends InvoicingTestBase {
@Inject
private Clock clock;
- private final InternalCallContextFactory internalCallContextFactory = new InternalCallContextFactory(getMysqlTestingHelper().getDBI(), clock);
-
+ @Inject
private AccountInternalApi accountInternalApi;
+
+ @Inject
+ private EntitlementInternalApi entitlementInternalApi;
+
+ @Inject
+ private InternalCallContextFactory internalCallContextFactory;
+
+
private Account account;
private Subscription subscription;
@@ -109,11 +118,14 @@ public class TestInvoiceDispatcher extends InvoicingTestBase {
busService.getBus().start();
- accountInternalApi = Mockito.mock(AccountInternalApi.class);
+ //accountInternalApi = Mockito.mock(AccountInternalApi.class);
account = Mockito.mock(Account.class);
final UUID accountId = UUID.randomUUID();
- Mockito.when(accountInternalApi.getAccountById(accountId, internalCallContext)).thenReturn(account);
+
+
+ Mockito.when(accountInternalApi.getAccountById(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(account);
+
Mockito.when(account.getCurrency()).thenReturn(Currency.USD);
Mockito.when(account.getId()).thenReturn(accountId);
Mockito.when(account.isNotifiedForInvoices()).thenReturn(true);
@@ -149,12 +161,12 @@ public class TestInvoiceDispatcher extends InvoicingTestBase {
fixedPrice, BigDecimal.ONE, currency, BillingPeriod.MONTHLY, 1,
BillingModeType.IN_ADVANCE, "", 1L, SubscriptionTransitionType.CREATE));
- Mockito.when(billingApi.getBillingEventsForAccountAndUpdateAccountBCD(accountId, internalCallContext)).thenReturn(events);
+ Mockito.when(billingApi.getBillingEventsForAccountAndUpdateAccountBCD(Mockito.<UUID>any(), Mockito.<InternalCallContext>any())).thenReturn(events);
final DateTime target = new DateTime();
final InvoiceNotifier invoiceNotifier = new NullInvoiceNotifier();
- final InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountInternalApi, billingApi, null, invoiceDao,
+ final InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountInternalApi, billingApi, entitlementInternalApi, invoiceDao,
invoiceNotifier, locker, busService.getBus(),
clock, new InternalCallContextFactory(getMysqlTestingHelper().getDBI(), clock));
@@ -206,9 +218,9 @@ public class TestInvoiceDispatcher extends InvoicingTestBase {
new MockPlanPhase(jetTrialEvergreen1000USD, PhaseType.EVERGREEN), null, new BigDecimal("1000"), account.getCurrency(), BillingPeriod.MONTHLY,
31, 31, BillingModeType.IN_ADVANCE, "CHANGE", 3L, SubscriptionTransitionType.CHANGE));
- Mockito.when(billingApi.getBillingEventsForAccountAndUpdateAccountBCD(account.getId(), internalCallContext)).thenReturn(events);
+ Mockito.when(billingApi.getBillingEventsForAccountAndUpdateAccountBCD(Mockito.<UUID>any(), Mockito.<InternalCallContext>any())).thenReturn(events);
final InvoiceNotifier invoiceNotifier = new NullInvoiceNotifier();
- final InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountInternalApi, billingApi, null, invoiceDao,
+ final InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountInternalApi, billingApi, entitlementInternalApi, invoiceDao,
invoiceNotifier, locker, busService.getBus(),
clock, internalCallContextFactory);