killbill-memoizeit
Changes
analytics/pom.xml 8(+7 -1)
analytics/src/main/java/com/ning/billing/analytics/model/BusinessOverdueStatusModelDao.java 4(+3 -1)
analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java 134(+132 -2)
analytics/src/test/java/com/ning/billing/analytics/api/user/TestDefaultAnalyticsUserApi.java 72(+3 -69)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceItemSqlDao.java 14(+0 -14)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentTagSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessOverdueStatusSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionTagSqlDao.java 10(+0 -10)
analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleWithEmbeddedDB.java 17(+14 -3)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentField.java 4(+2 -2)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentTag.java 4(+2 -2)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java 6(+2 -4)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java 6(+2 -4)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionField.java 4(+2 -2)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionTag.java 4(+2 -2)
Details
analytics/pom.xml 8(+7 -1)
diff --git a/analytics/pom.xml b/analytics/pom.xml
index c6dbd2f..d67c2f3 100644
--- a/analytics/pom.xml
+++ b/analytics/pom.xml
@@ -15,7 +15,8 @@
~ under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ning.billing</groupId>
@@ -132,6 +133,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>com.jayway.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-mxj</artifactId>
<scope>test</scope>
diff --git a/analytics/src/main/java/com/ning/billing/analytics/api/DefaultAnalyticsService.java b/analytics/src/main/java/com/ning/billing/analytics/api/DefaultAnalyticsService.java
index 410c312..7fa573d 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/api/DefaultAnalyticsService.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/api/DefaultAnalyticsService.java
@@ -53,4 +53,13 @@ public class DefaultAnalyticsService implements AnalyticsService {
log.error("Unable to register to the EventBus!", e);
}
}
+
+ @LifecycleHandlerType(LifecycleHandlerType.LifecycleLevel.UNREGISTER_EVENTS)
+ public void unregisterForNotifications() {
+ try {
+ eventBus.unregister(listener);
+ } catch (InternalBus.EventBusException e) {
+ throw new RuntimeException("Unable to unregister to the EventBus!", e);
+ }
+ }
}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionDao.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionDao.java
index 6eeecfc..80765e7 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionDao.java
@@ -38,7 +38,6 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.util.callcontext.InternalCallContext;
-import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.events.EffectiveSubscriptionInternalEvent;
import com.ning.billing.util.events.SubscriptionInternalEvent;
import com.ning.billing.util.svcapi.account.AccountInternalApi;
@@ -54,19 +53,16 @@ public class BusinessSubscriptionTransitionDao {
private final EntitlementInternalApi entitlementApi;
private final AccountInternalApi accountApi;
private final CatalogService catalogService;
- private final Clock clock;
@Inject
public BusinessSubscriptionTransitionDao(final BusinessSubscriptionTransitionSqlDao sqlDao,
final CatalogService catalogService,
final EntitlementInternalApi entitlementApi,
- final AccountInternalApi accountApi,
- final Clock clock) {
+ final AccountInternalApi accountApi) {
this.sqlDao = sqlDao;
this.catalogService = catalogService;
this.entitlementApi = entitlementApi;
this.accountApi = accountApi;
- this.clock = clock;
}
public void rebuildTransitionsForBundle(final UUID bundleId, final InternalCallContext context) {
diff --git a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessOverdueStatusModelDao.java b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessOverdueStatusModelDao.java
index 5fcb313..275a690 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessOverdueStatusModelDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessOverdueStatusModelDao.java
@@ -18,6 +18,8 @@ package com.ning.billing.analytics.model;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.ning.billing.util.entity.EntityBase;
@@ -31,7 +33,7 @@ public class BusinessOverdueStatusModelDao extends EntityBase {
private final DateTime startDate;
private final DateTime endDate;
- public BusinessOverdueStatusModelDao(final String accountKey, final UUID bundleId, final DateTime endDate,
+ public BusinessOverdueStatusModelDao(final String accountKey, final UUID bundleId, @Nullable final DateTime endDate,
final String externalKey, final DateTime startDate, final String status) {
this.accountKey = accountKey;
this.bundleId = bundleId;
diff --git a/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java b/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
index eca1be6..dfedeeb 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
@@ -28,6 +28,7 @@ import com.ning.billing.analytics.api.user.AnalyticsUserApi;
import com.ning.billing.analytics.api.user.DefaultAnalyticsUserApi;
import com.ning.billing.analytics.dao.AnalyticsDao;
import com.ning.billing.analytics.dao.AnalyticsSanityDao;
+import com.ning.billing.analytics.dao.BusinessAccountFieldSqlDao;
import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
import com.ning.billing.analytics.dao.BusinessAccountTagSqlDao;
import com.ning.billing.analytics.dao.BusinessInvoiceFieldSqlDao;
@@ -51,8 +52,37 @@ public class AnalyticsModule extends AbstractModule {
@Override
protected void configure() {
+ installAnalyticsUserApi();
+ installAnalyticsSanityApi();
+
+ installAnalyticsDao();
+ installAnalyticsSqlDao();
+
+ bind(AnalyticsListener.class).asEagerSingleton();
+ bind(AnalyticsService.class).to(DefaultAnalyticsService.class).asEagerSingleton();
+ }
+
+ protected void installAnalyticsUserApi() {
+ bind(DefaultAnalyticsUserApi.class).asEagerSingleton();
+ bind(AnalyticsUserApi.class).to(DefaultAnalyticsUserApi.class).asEagerSingleton();
+ }
+
+ protected void installAnalyticsSanityApi() {
+ bind(AnalyticsSanityApi.class).to(DefaultAnalyticsSanityApi.class).asEagerSingleton();
+ }
+
+ protected void installAnalyticsDao() {
+ bind(AnalyticsDao.class).to(DefaultAnalyticsDao.class).asEagerSingleton();
+ bind(AnalyticsSanityDao.class).to(DefaultAnalyticsSanityDao.class).asEagerSingleton();
+ bind(BusinessSubscriptionTransitionDao.class).asEagerSingleton();
+ bind(BusinessAccountDao.class).asEagerSingleton();
+ bind(BusinessTagDao.class).asEagerSingleton();
+ }
+
+ protected void installAnalyticsSqlDao() {
bind(BusinessAccountSqlDao.class).toProvider(new BusinessSqlProvider<BusinessAccountSqlDao>(BusinessAccountSqlDao.class));
bind(BusinessAccountTagSqlDao.class).toProvider(new BusinessSqlProvider<BusinessAccountTagSqlDao>(BusinessAccountTagSqlDao.class));
+ bind(BusinessAccountFieldSqlDao.class).toProvider(new BusinessSqlProvider<BusinessAccountFieldSqlDao>(BusinessAccountFieldSqlDao.class));
bind(BusinessInvoiceFieldSqlDao.class).toProvider(new BusinessSqlProvider<BusinessInvoiceFieldSqlDao>(BusinessInvoiceFieldSqlDao.class));
bind(BusinessInvoiceItemSqlDao.class).toProvider(new BusinessSqlProvider<BusinessInvoiceItemSqlDao>(BusinessInvoiceItemSqlDao.class));
bind(BusinessInvoicePaymentFieldSqlDao.class).toProvider(new BusinessSqlProvider<BusinessInvoicePaymentFieldSqlDao>(BusinessInvoicePaymentFieldSqlDao.class));
@@ -64,18 +94,5 @@ public class AnalyticsModule extends AbstractModule {
bind(BusinessSubscriptionTransitionFieldSqlDao.class).toProvider(new BusinessSqlProvider<BusinessSubscriptionTransitionFieldSqlDao>(BusinessSubscriptionTransitionFieldSqlDao.class));
bind(BusinessSubscriptionTransitionSqlDao.class).toProvider(new BusinessSqlProvider<BusinessSubscriptionTransitionSqlDao>(BusinessSubscriptionTransitionSqlDao.class));
bind(BusinessSubscriptionTransitionTagSqlDao.class).toProvider(new BusinessSqlProvider<BusinessSubscriptionTransitionTagSqlDao>(BusinessSubscriptionTransitionTagSqlDao.class));
-
- bind(BusinessSubscriptionTransitionDao.class).asEagerSingleton();
- bind(BusinessAccountDao.class).asEagerSingleton();
- bind(BusinessTagDao.class).asEagerSingleton();
- bind(AnalyticsListener.class).asEagerSingleton();
-
- bind(AnalyticsDao.class).to(DefaultAnalyticsDao.class).asEagerSingleton();
- bind(AnalyticsSanityDao.class).to(DefaultAnalyticsSanityDao.class).asEagerSingleton();
- bind(AnalyticsService.class).to(DefaultAnalyticsService.class).asEagerSingleton();
-
- bind(DefaultAnalyticsUserApi.class).asEagerSingleton();
- bind(AnalyticsSanityApi.class).to(DefaultAnalyticsSanityApi.class).asEagerSingleton();
- bind(AnalyticsUserApi.class).to(DefaultAnalyticsUserApi.class).asEagerSingleton();
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java
new file mode 100644
index 0000000..c31930e
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java
@@ -0,0 +1,139 @@
+/*
+ * 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.analytics;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+
+import com.ning.billing.GuicyKillbillTestSuiteNoDB;
+import com.ning.billing.account.api.AccountUserApi;
+import com.ning.billing.analytics.api.DefaultAnalyticsService;
+import com.ning.billing.analytics.api.user.AnalyticsUserApi;
+import com.ning.billing.analytics.dao.BusinessAccountFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceItemSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessOverdueStatusSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionTagSqlDao;
+import com.ning.billing.analytics.glue.TestAnalyticsModuleNoDB;
+import com.ning.billing.catalog.api.CatalogService;
+import com.ning.billing.entitlement.api.user.EntitlementUserApi;
+import com.ning.billing.invoice.api.InvoiceUserApi;
+import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.util.glue.RealImplementation;
+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.svcsapi.bus.InternalBus;
+
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+public abstract class AnalyticsTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
+
+ @Inject
+ @RealImplementation
+ protected AccountUserApi accountApi;
+ @Inject
+ protected AccountInternalApi accountInternalApi;
+ @Inject
+ protected AnalyticsUserApi analyticsUserApi;
+ @Inject
+ protected CatalogService catalogService;
+ @Inject
+ @RealImplementation
+ protected EntitlementUserApi entitlementApi;
+ @Inject
+ protected EntitlementInternalApi entitlementInternalApi;
+ @Inject
+ protected InvoiceUserApi invoiceApi;
+ @Inject
+ protected InvoiceDao realInvoiceDao;
+ @Inject
+ protected InvoiceInternalApi invoiceInternalApi;
+ @Inject
+ protected PaymentDao paymentDao;
+ @Inject
+ protected DefaultAnalyticsService service;
+ @Inject
+ protected InternalBus bus;
+ @Inject
+ protected BusinessAccountDao accountDao;
+ @Inject
+ protected BusinessAccountSqlDao accountSqlDao;
+ @Inject
+ protected BusinessAccountFieldSqlDao accountFieldSqlDao;
+ @Inject
+ protected BusinessAccountTagSqlDao accountTagSqlDao;
+ @Inject
+ protected BusinessInvoiceFieldSqlDao invoiceFieldSqlDao;
+ @Inject
+ protected BusinessInvoiceItemSqlDao invoiceItemSqlDao;
+ @Inject
+ protected BusinessInvoicePaymentFieldSqlDao invoicePaymentFieldSqlDao;
+ @Inject
+ protected BusinessInvoicePaymentSqlDao invoicePaymentSqlDao;
+ @Inject
+ protected BusinessInvoicePaymentTagSqlDao invoicePaymentTagSqlDao;
+ @Inject
+ protected BusinessInvoiceDao invoiceDao;
+ @Inject
+ protected BusinessInvoiceSqlDao invoiceSqlDao;
+ @Inject
+ protected BusinessInvoiceTagSqlDao invoiceTagSqlDao;
+ @Inject
+ protected BusinessOverdueStatusDao overdueStatusDao;
+ @Inject
+ protected BusinessOverdueStatusSqlDao overdueStatusSqlDao;
+ @Inject
+ protected BusinessSubscriptionTransitionFieldSqlDao subscriptionTransitionFieldSqlDao;
+ @Inject
+ protected BusinessSubscriptionTransitionTagSqlDao subscriptionTransitionTagSqlDao;
+ @Inject
+ protected BusinessSubscriptionTransitionDao subscriptionTransitionDao;
+ @Inject
+ protected BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao;
+ @Inject
+ protected BusinessTagDao tagDao;
+
+ @BeforeClass(groups = "fast")
+ protected void setup() throws Exception {
+ final Injector injector = Guice.createInjector(new TestAnalyticsModuleNoDB());
+ injector.injectMembers(this);
+ }
+
+ @BeforeMethod(groups = "fast")
+ public void setupTest() {
+ bus.start();
+ }
+
+ @AfterMethod(groups = "fast")
+ public void cleanupTest() {
+ bus.stop();
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java
index e545192..6541125 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java
@@ -16,7 +16,137 @@
package com.ning.billing.analytics;
-import com.ning.billing.KillbillTestSuiteWithEmbeddedDB;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
-public abstract class AnalyticsTestSuiteWithEmbeddedDB extends KillbillTestSuiteWithEmbeddedDB {
+import com.ning.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
+import com.ning.billing.account.api.AccountUserApi;
+import com.ning.billing.analytics.api.AnalyticsService;
+import com.ning.billing.analytics.api.DefaultAnalyticsService;
+import com.ning.billing.analytics.api.user.AnalyticsUserApi;
+import com.ning.billing.analytics.dao.BusinessAccountFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceItemSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessOverdueStatusSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionTagSqlDao;
+import com.ning.billing.analytics.glue.TestAnalyticsModuleWithEmbeddedDB;
+import com.ning.billing.catalog.api.CatalogService;
+import com.ning.billing.entitlement.api.user.EntitlementUserApi;
+import com.ning.billing.invoice.api.InvoiceUserApi;
+import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.util.glue.RealImplementation;
+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.svcsapi.bus.InternalBus;
+
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+public abstract class AnalyticsTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbeddedDB {
+
+ @Inject
+ @RealImplementation
+ protected AccountUserApi accountApi;
+ @Inject
+ protected AccountInternalApi accountInternalApi;
+ @Inject
+ protected AnalyticsUserApi analyticsUserApi;
+ @Inject
+ protected AnalyticsService analyticsService;
+ @Inject
+ protected CatalogService catalogService;
+ @Inject
+ @RealImplementation
+ protected EntitlementUserApi entitlementApi;
+ @Inject
+ protected EntitlementInternalApi entitlementInternalApi;
+ @Inject
+ protected InvoiceUserApi invoiceApi;
+ @Inject
+ protected InvoiceDao realInvoiceDao;
+ @Inject
+ protected InvoiceInternalApi invoiceInternalApi;
+ @Inject
+ protected PaymentDao paymentDao;
+ @Inject
+ protected DefaultAnalyticsService service;
+ @Inject
+ protected InternalBus bus;
+ @Inject
+ protected BusinessAccountDao accountDao;
+ @Inject
+ protected BusinessAccountSqlDao accountSqlDao;
+ @Inject
+ protected BusinessAccountFieldSqlDao accountFieldSqlDao;
+ @Inject
+ protected BusinessAccountTagSqlDao accountTagSqlDao;
+ @Inject
+ protected BusinessInvoiceFieldSqlDao invoiceFieldSqlDao;
+ @Inject
+ protected BusinessInvoiceItemSqlDao invoiceItemSqlDao;
+ @Inject
+ protected BusinessInvoicePaymentFieldSqlDao invoicePaymentFieldSqlDao;
+ @Inject
+ protected BusinessInvoicePaymentSqlDao invoicePaymentSqlDao;
+ @Inject
+ protected BusinessInvoicePaymentTagSqlDao invoicePaymentTagSqlDao;
+ @Inject
+ protected BusinessInvoiceDao invoiceDao;
+ @Inject
+ protected BusinessInvoiceSqlDao invoiceSqlDao;
+ @Inject
+ protected BusinessInvoiceTagSqlDao invoiceTagSqlDao;
+ @Inject
+ protected BusinessOverdueStatusDao overdueStatusDao;
+ @Inject
+ protected BusinessOverdueStatusSqlDao overdueStatusSqlDao;
+ @Inject
+ protected BusinessSubscriptionTransitionFieldSqlDao subscriptionTransitionFieldSqlDao;
+ @Inject
+ protected BusinessSubscriptionTransitionTagSqlDao subscriptionTransitionTagSqlDao;
+ @Inject
+ protected BusinessSubscriptionTransitionDao subscriptionTransitionDao;
+ @Inject
+ protected BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao;
+ @Inject
+ protected BusinessTagDao tagDao;
+
+ @BeforeClass(groups = "slow")
+ protected void setup() throws Exception {
+ final Injector injector = Guice.createInjector(new TestAnalyticsModuleWithEmbeddedDB());
+ injector.injectMembers(this);
+ }
+
+ @BeforeMethod(groups = "slow")
+ public void setupTest() throws Exception {
+ bus.start();
+ restartAnalyticsService();
+ }
+
+ @AfterMethod(groups = "slow")
+ public void cleanupTest() throws Exception {
+ bus.stop();
+ stopAnalyticsService();
+ }
+
+ private void restartAnalyticsService() throws Exception {
+ ((DefaultAnalyticsService) analyticsService).registerForNotifications();
+ }
+
+ private void stopAnalyticsService() throws Exception {
+ ((DefaultAnalyticsService) analyticsService).unregisterForNotifications();
+ }
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 71741b5..411a66e 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -16,38 +16,26 @@
package com.ning.billing.analytics.api;
-import java.io.IOException;
import java.math.BigDecimal;
-import java.sql.SQLException;
-import java.util.List;
import java.util.UUID;
+import java.util.concurrent.Callable;
import org.joda.time.DateTime;
import org.mockito.Mockito;
import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.AccountUserApi;
+import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.account.api.user.DefaultAccountCreationEvent;
import com.ning.billing.account.dao.AccountModelDao;
-import com.ning.billing.analytics.AnalyticsTestModule;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockProduct;
-import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
-import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionSqlDao;
-import com.ning.billing.analytics.model.BusinessSubscription;
-import com.ning.billing.analytics.model.BusinessSubscriptionEvent;
-import com.ning.billing.analytics.model.BusinessSubscriptionTransitionModelDao;
+import com.ning.billing.catalog.MockCatalog;
import com.ning.billing.catalog.MockPriceList;
-import com.ning.billing.catalog.api.Catalog;
-import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.catalog.api.PhaseType;
import com.ning.billing.catalog.api.Plan;
@@ -55,22 +43,16 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.catalog.api.PriceList;
import com.ning.billing.catalog.api.Product;
import com.ning.billing.catalog.api.ProductCategory;
+import com.ning.billing.entitlement.api.SubscriptionTransitionType;
import com.ning.billing.entitlement.api.user.DefaultEffectiveSubscriptionEvent;
-import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionTransitionData;
import com.ning.billing.entitlement.events.EntitlementEvent;
import com.ning.billing.entitlement.events.user.ApiEventType;
-import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.invoice.api.InvoicePayment;
+import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.user.DefaultInvoiceCreationEvent;
-import com.ning.billing.invoice.dao.InvoiceDao;
-import com.ning.billing.invoice.dao.InvoiceItemModelDao;
-import com.ning.billing.invoice.dao.InvoiceModelDao;
-import com.ning.billing.invoice.dao.InvoiceModelDaoHelper;
-import com.ning.billing.invoice.dao.InvoicePaymentModelDao;
import com.ning.billing.invoice.model.DefaultInvoice;
import com.ning.billing.invoice.model.FixedPriceInvoiceItem;
import com.ning.billing.mock.MockAccountBuilder;
@@ -78,26 +60,18 @@ import com.ning.billing.mock.MockPlan;
import com.ning.billing.payment.api.DefaultPaymentInfoEvent;
import com.ning.billing.payment.api.PaymentMethod;
import com.ning.billing.payment.api.PaymentStatus;
-import com.ning.billing.payment.dao.PaymentAttemptModelDao;
-import com.ning.billing.payment.dao.PaymentDao;
-import com.ning.billing.payment.dao.PaymentModelDao;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
+import com.ning.billing.util.callcontext.InternalCallContext;
import com.ning.billing.util.events.AccountCreationInternalEvent;
import com.ning.billing.util.events.EffectiveSubscriptionInternalEvent;
import com.ning.billing.util.events.InvoiceCreationInternalEvent;
import com.ning.billing.util.events.PaymentInfoInternalEvent;
-import com.ning.billing.util.svcsapi.bus.InternalBus;
-import com.google.common.base.Function;
-import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.Inject;
+import static com.jayway.awaitility.Awaitility.await;
+import static java.util.concurrent.TimeUnit.SECONDS;
import static org.testng.Assert.fail;
-@Guice(modules = {AnalyticsTestModule.class})
public class TestAnalyticsService extends AnalyticsTestSuiteWithEmbeddedDB {
final Product product = new MockProduct("platinum", "subscription", ProductCategory.BASE);
@@ -105,62 +79,23 @@ public class TestAnalyticsService extends AnalyticsTestSuiteWithEmbeddedDB {
final PlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
private static final Long TOTAL_ORDERING = 11L;
- private static final String BUNDLE_EXTERNAL_KEY = UUID.randomUUID().toString();
- private static final UUID ACCOUNT_ID = UUID.randomUUID();
- private static final String ACCOUNT_KEY = UUID.randomUUID().toString();
+ private final String ACCOUNT_KEY = UUID.randomUUID().toString();
+ private final String BUNDLE_KEY = UUID.randomUUID().toString();
private static final Currency ACCOUNT_CURRENCY = Currency.EUR;
private static final BigDecimal INVOICE_AMOUNT = BigDecimal.valueOf(1243.11);
-
- private final Clock clock = new DefaultClock();
-
- @Inject
- private AccountUserApi accountApi;
-
- @Inject
- private EntitlementUserApi entitlementApi;
-
- @Inject
- private InvoiceDao invoiceDao;
-
- @Inject
- private PaymentDao paymentDao;
-
- @Inject
- private DefaultAnalyticsService service;
-
- @Inject
- private InternalBus bus;
-
- @Inject
- private BusinessSubscriptionTransitionSqlDao subscriptionSqlDao;
-
- @Inject
- private BusinessAccountSqlDao accountSqlDao;
+ private final UUID bundleId = UUID.randomUUID();
+ private final UUID subscriptionId = UUID.randomUUID();
private EffectiveSubscriptionInternalEvent transition;
- private BusinessSubscriptionTransitionModelDao expectedTransition;
private AccountCreationInternalEvent accountCreationNotification;
private InvoiceCreationInternalEvent invoiceCreationNotification;
private PaymentInfoInternalEvent paymentInfoNotification;
- @Inject
- private CatalogService catalogService;
-
- private Catalog catalog;
-
- @BeforeClass(groups = "slow")
- public void setUp() throws IOException, ClassNotFoundException, SQLException, EntitlementUserApiException, CatalogApiException {
- catalog = catalogService.getFullCatalog();
- Mockito.when(catalog.findPlan(Mockito.anyString(), Mockito.<DateTime>any())).thenReturn(plan);
- Mockito.when(catalog.findPhase(Mockito.anyString(), Mockito.<DateTime>any(), Mockito.<DateTime>any())).thenReturn(phase);
-
- // Killbill generic setup
- bus.start();
- }
-
@BeforeMethod(groups = "slow")
- public void createMocks() {
+ public void createMocks() throws AccountApiException {
+ Mockito.when(catalogService.getFullCatalog()).thenReturn(new MockCatalog());
+
final PaymentMethod paymentMethod = Mockito.mock(PaymentMethod.class);
final UUID paymentMethodId = UUID.randomUUID();
Mockito.when(paymentMethod.getId()).thenReturn(paymentMethodId);
@@ -169,36 +104,46 @@ public class TestAnalyticsService extends AnalyticsTestSuiteWithEmbeddedDB {
.currency(ACCOUNT_CURRENCY)
.paymentMethodId(paymentMethodId)
.build();
+ Mockito.when(accountInternalApi.getAccountById(Mockito.eq(account.getId()), Mockito.<InternalCallContext>any())).thenReturn(account);
try {
- final Account storedAccount = accountApi.createAccount(account, callContext);
-
// Create events for the bus and expected results
- createSubscriptionTransitionEvent(storedAccount);
- createAccountCreationEvent(storedAccount);
- createInvoiceAndPaymentCreationEvents(storedAccount);
+ createSubscriptionTransitionEvent(account);
+ createAccountCreationEvent(account);
+ createInvoiceAndPaymentCreationEvents(account);
} catch (Throwable t) {
fail("Initializing accounts failed.", t);
}
}
private void createSubscriptionTransitionEvent(final Account account) throws EntitlementUserApiException {
- final SubscriptionBundle bundle = entitlementApi.createBundleForAccount(account.getId(), BUNDLE_EXTERNAL_KEY, callContext);
-
- // Verify we correctly initialized the account subsystem
- Assert.assertNotNull(bundle);
- Assert.assertEquals(bundle.getExternalKey(), BUNDLE_EXTERNAL_KEY);
-
- // Create a subscription transition event
- final UUID subscriptionId = UUID.randomUUID();
final DateTime effectiveTransitionTime = clock.getUTCNow();
final DateTime requestedTransitionTime = clock.getUTCNow();
final PriceList priceList = new MockPriceList().setName("something");
+ final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
+ Mockito.when(bundle.getId()).thenReturn(bundleId);
+ Mockito.when(bundle.getAccountId()).thenReturn(account.getId());
+ Mockito.when(bundle.getExternalKey()).thenReturn(BUNDLE_KEY);
+ Mockito.when(entitlementInternalApi.getBundleFromId(Mockito.eq(bundleId), Mockito.<InternalCallContext>any())).thenReturn(bundle);
+
+ final Subscription subscription = Mockito.mock(Subscription.class);
+ Mockito.when(subscription.getId()).thenReturn(subscriptionId);
+ Mockito.when(subscription.getBundleId()).thenReturn(bundleId);
+ Mockito.when(entitlementInternalApi.getSubscriptionFromId(Mockito.eq(subscriptionId), Mockito.<InternalCallContext>any())).thenReturn(subscription);
+ Mockito.when(entitlementInternalApi.getSubscriptionsForBundle(Mockito.eq(bundleId), Mockito.<InternalCallContext>any())).thenReturn(ImmutableList.<Subscription>of(subscription));
+
+ final EffectiveSubscriptionInternalEvent event = Mockito.mock(EffectiveSubscriptionInternalEvent.class);
+ Mockito.when(event.getEffectiveTransitionTime()).thenReturn(effectiveTransitionTime);
+ Mockito.when(event.getRequestedTransitionTime()).thenReturn(requestedTransitionTime);
+ Mockito.when(event.getTransitionType()).thenReturn(SubscriptionTransitionType.CREATE);
+ Mockito.when(entitlementInternalApi.getAllTransitions(Mockito.eq(subscription), Mockito.<InternalCallContext>any())).thenReturn(ImmutableList.<EffectiveSubscriptionInternalEvent>of(event));
+
+ // Create a subscription transition event
transition = new DefaultEffectiveSubscriptionEvent(new SubscriptionTransitionData(
UUID.randomUUID(),
subscriptionId,
- bundle.getId(),
+ bundleId,
EntitlementEvent.EventType.API_USER,
ApiEventType.CREATE,
requestedTransitionTime,
@@ -214,18 +159,6 @@ public class TestAnalyticsService extends AnalyticsTestSuiteWithEmbeddedDB {
TOTAL_ORDERING,
null,
true), null, null, 1L, 1L);
- expectedTransition = new BusinessSubscriptionTransitionModelDao(
- TOTAL_ORDERING,
- transition.getBundleId(),
- BUNDLE_EXTERNAL_KEY,
- ACCOUNT_ID,
- ACCOUNT_KEY,
- transition.getSubscriptionId(),
- requestedTransitionTime,
- BusinessSubscriptionEvent.subscriptionCreated(plan.getName(), catalog, clock.getUTCNow(), clock.getUTCNow()),
- null,
- new BusinessSubscription(priceList.getName(), plan.getName(), phase.getName(), ACCOUNT_CURRENCY, effectiveTransitionTime, Subscription.SubscriptionState.ACTIVE, catalog)
- );
}
private void createAccountCreationEvent(final Account account) {
@@ -234,90 +167,65 @@ public class TestAnalyticsService extends AnalyticsTestSuiteWithEmbeddedDB {
private void createInvoiceAndPaymentCreationEvents(final Account account) {
final DefaultInvoice invoice = new DefaultInvoice(account.getId(), clock.getUTCToday(), clock.getUTCToday(), ACCOUNT_CURRENCY);
- final FixedPriceInvoiceItem invoiceItem = new FixedPriceInvoiceItem(invoice.getId(), account.getId(), UUID.randomUUID(), UUID.randomUUID(), "somePlan", "somePhase", clock.getUTCToday(),
+ final FixedPriceInvoiceItem invoiceItem = new FixedPriceInvoiceItem(invoice.getId(), account.getId(), bundleId, subscriptionId, "somePlan", "somePhase", clock.getUTCToday(),
INVOICE_AMOUNT, ACCOUNT_CURRENCY);
invoice.addInvoiceItem(invoiceItem);
-
- final InvoiceModelDao invoiceModelDao = new InvoiceModelDao(invoice);
- final List<InvoiceItemModelDao> invoiceItemModelDaos = ImmutableList.<InvoiceItemModelDao>copyOf(Collections2.transform(invoice.getInvoiceItems(),
- new Function<InvoiceItem, InvoiceItemModelDao>() {
- @Override
- public InvoiceItemModelDao apply(final InvoiceItem input) {
- return new InvoiceItemModelDao(input);
- }
- }));
- // Not really needed, there shouldn't be any payment at this stage
- final List<InvoicePaymentModelDao> invoicePaymentModelDaos = ImmutableList.<InvoicePaymentModelDao>copyOf(Collections2.transform(invoice.getPayments(),
- new Function<InvoicePayment, InvoicePaymentModelDao>() {
- @Override
- public InvoicePaymentModelDao apply(final InvoicePayment input) {
- return new InvoicePaymentModelDao(input);
- }
- }));
-
- invoiceDao.createInvoice(invoiceModelDao, invoiceItemModelDaos, invoicePaymentModelDaos, true, ImmutableMap.<UUID, DateTime>of(), internalCallContext);
- final List<InvoiceModelDao> invoices = invoiceDao.getInvoicesByAccount(account.getId(), internalCallContext);
- Assert.assertEquals(invoices.size(), 1);
- Assert.assertEquals(invoices.get(0).getInvoiceItems().size(), 1);
+ Mockito.when(invoiceInternalApi.getInvoicesByAccountId(Mockito.eq(account.getId()), Mockito.<InternalCallContext>any())).thenReturn(ImmutableList.<Invoice>of(invoice));
// It doesn't really matter what the events contain - the listener will go back to the db
invoiceCreationNotification = new DefaultInvoiceCreationEvent(invoice.getId(), account.getId(),
INVOICE_AMOUNT, ACCOUNT_CURRENCY, null, 1L, 1L);
- paymentInfoNotification = new DefaultPaymentInfoEvent(account.getId(), invoices.get(0).getId(), null, InvoiceModelDaoHelper.getBalance(invoices.get(0)), -1,
+ paymentInfoNotification = new DefaultPaymentInfoEvent(account.getId(), invoice.getId(), null, INVOICE_AMOUNT, -1,
PaymentStatus.UNKNOWN, null, null, null, clock.getUTCNow(), 1L, 1L);
-
- final PaymentModelDao paymentInfo = new PaymentModelDao(account.getId(), invoice.getId(), account.getPaymentMethodId(),
- BigDecimal.ONE, Currency.USD, clock.getUTCNow(), PaymentStatus.SUCCESS);
- final PaymentAttemptModelDao paymentAttempt = new PaymentAttemptModelDao(account.getId(), invoice.getId(), paymentInfo.getId(),
- clock.getUTCNow(), BigDecimal.ONE);
- paymentDao.insertPaymentWithAttempt(paymentInfo, paymentAttempt, internalCallContext);
- Assert.assertEquals(paymentDao.getPaymentsForAccount(account.getId(), internalCallContext).size(), 1);
}
- // Flaky
- @Test(groups = "slow", enabled = false)
+ @Test(groups = "slow")
public void testRegisterForNotifications() throws Exception {
// Make sure the service has been instantiated
Assert.assertEquals(service.getName(), "analytics-service");
- // Test the bus and make sure we can register our service
- try {
- service.registerForNotifications();
- } catch (Throwable t) {
- Assert.fail("Unable to start the bus or service! " + t);
- }
-
Assert.assertNull(accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext));
// Send events and wait for the async part...
bus.post(accountCreationNotification, internalCallContext);
- Thread.sleep(5000);
- Assert.assertNotNull(accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext));
+ waitALittle(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return (accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext) != null);
+ }
+ });
// Test subscriptions integration - this is just to exercise the code. It's hard to test the actual subscriptions
// as we would need to mock a bunch of APIs (see integration tests in Beatrix instead)
bus.post(transition, internalCallContext);
- Thread.sleep(5000);
+ waitALittle(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return (subscriptionTransitionSqlDao.getTransitionsForAccount(ACCOUNT_KEY, internalCallContext).size() == 1);
+ }
+ });
// Test invoice integration - the account creation notification has triggered a BAC update
- Assert.assertEquals(accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext).getTotalInvoiceBalance().compareTo(INVOICE_AMOUNT), 1);
-
- // Post the same invoice event again - the invoice balance shouldn't change
bus.post(invoiceCreationNotification, internalCallContext);
- Thread.sleep(5000);
- Assert.assertEquals(accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext).getTotalInvoiceBalance().compareTo(INVOICE_AMOUNT), 1);
+ waitALittle(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ // Test invoice integration - the account creation notification has triggered a BAC update
+ return (accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext).getTotalInvoiceBalance().compareTo(INVOICE_AMOUNT) == 0);
+ }
+ });
// Test payment integration - the fields have already been populated, just make sure the code is exercised
// It's hard to test the actual payments fields though in bac, since we should mock the plugin
bus.post(paymentInfoNotification, internalCallContext);
- Thread.sleep(5000);
+ }
- // Test the shutdown sequence
+ private void waitALittle(final Callable<Boolean> callable) {
try {
- bus.stop();
- } catch (Throwable t) {
- Assert.fail("Unable to stop the bus!");
+ await().atMost(5, SECONDS).until(callable);
+ } catch (Exception e) {
+ Assert.fail("Exception in TestAnalyticsService", e);
}
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/user/TestDefaultAnalyticsUserApi.java b/analytics/src/test/java/com/ning/billing/analytics/api/user/TestDefaultAnalyticsUserApi.java
index 59f043a..977d84b 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/user/TestDefaultAnalyticsUserApi.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/user/TestDefaultAnalyticsUserApi.java
@@ -21,31 +21,14 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.mockito.Mockito;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
-import com.ning.billing.analytics.BusinessAccountDao;
-import com.ning.billing.analytics.BusinessInvoiceDao;
-import com.ning.billing.analytics.BusinessInvoicePaymentDao;
-import com.ning.billing.analytics.BusinessOverdueStatusDao;
-import com.ning.billing.analytics.BusinessSubscriptionTransitionDao;
-import com.ning.billing.analytics.BusinessTagDao;
import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockProduct;
import com.ning.billing.analytics.api.TimeSeriesData;
-import com.ning.billing.analytics.dao.AnalyticsDao;
-import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
-import com.ning.billing.analytics.dao.BusinessAccountTagSqlDao;
-import com.ning.billing.analytics.dao.BusinessInvoiceItemSqlDao;
-import com.ning.billing.analytics.dao.BusinessInvoicePaymentSqlDao;
-import com.ning.billing.analytics.dao.BusinessInvoiceSqlDao;
-import com.ning.billing.analytics.dao.BusinessOverdueStatusSqlDao;
-import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionSqlDao;
-import com.ning.billing.analytics.dao.DefaultAnalyticsDao;
import com.ning.billing.analytics.model.BusinessAccountModelDao;
import com.ning.billing.analytics.model.BusinessSubscription;
import com.ning.billing.analytics.model.BusinessSubscriptionEvent;
@@ -59,65 +42,16 @@ import com.ning.billing.catalog.api.Product;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.mock.MockPlan;
-import com.ning.billing.util.cache.CacheControllerDispatcher;
-import com.ning.billing.util.callcontext.InternalCallContextFactory;
-import com.ning.billing.util.callcontext.TenantContext;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.ClockMock;
-import com.ning.billing.util.dao.DefaultNonEntityDao;
-import com.ning.billing.util.dao.NonEntityDao;
-import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-import com.ning.billing.util.svcapi.payment.PaymentInternalApi;
-import com.ning.billing.util.svcapi.tag.TagInternalApi;
public class TestDefaultAnalyticsUserApi extends AnalyticsTestSuiteWithEmbeddedDB {
- private final Clock clock = new ClockMock();
- private final TenantContext tenantContext = Mockito.mock(TenantContext.class);
-
- private AnalyticsUserApi analyticsUserApi;
- private BusinessAccountSqlDao accountSqlDao;
- private BusinessSubscriptionTransitionSqlDao subscriptionTransitionSqlDao;
- private BusinessInvoiceSqlDao invoiceSqlDao;
- private BusinessInvoiceItemSqlDao invoiceItemSqlDao;
- private BusinessAccountTagSqlDao accountTagSqlDao;
- private BusinessOverdueStatusSqlDao overdueStatusSqlDao;
- private BusinessInvoicePaymentSqlDao invoicePaymentSqlDao;
-
- @BeforeMethod(groups = "mysql")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- final NonEntityDao nonEntityDao = new DefaultNonEntityDao(dbi);
- accountSqlDao = dbi.onDemand(BusinessAccountSqlDao.class);
- subscriptionTransitionSqlDao = dbi.onDemand(BusinessSubscriptionTransitionSqlDao.class);
- invoiceSqlDao = dbi.onDemand(BusinessInvoiceSqlDao.class);
- invoiceItemSqlDao = dbi.onDemand(BusinessInvoiceItemSqlDao.class);
- accountTagSqlDao = dbi.onDemand(BusinessAccountTagSqlDao.class);
- overdueStatusSqlDao = dbi.onDemand(BusinessOverdueStatusSqlDao.class);
- invoicePaymentSqlDao = dbi.onDemand(BusinessInvoicePaymentSqlDao.class);
-
- final AnalyticsDao analyticsDao = new DefaultAnalyticsDao(accountSqlDao, subscriptionTransitionSqlDao, invoiceSqlDao,
- invoiceItemSqlDao, accountTagSqlDao, overdueStatusSqlDao, invoicePaymentSqlDao);
- analyticsUserApi = new DefaultAnalyticsUserApi(analyticsDao,
- Mockito.mock(BusinessSubscriptionTransitionDao.class),
- Mockito.mock(BusinessAccountDao.class),
- Mockito.mock(BusinessInvoiceDao.class),
- Mockito.mock(BusinessOverdueStatusDao.class),
- Mockito.mock(BusinessInvoicePaymentDao.class),
- Mockito.mock(BusinessTagDao.class),
- Mockito.mock(EntitlementInternalApi.class),
- Mockito.mock(PaymentInternalApi.class),
- Mockito.mock(TagInternalApi.class),
- new InternalCallContextFactory(clock, nonEntityDao, new CacheControllerDispatcher()));
- }
-
@Test(groups = "mysql")
public void testAccountsCreatedOverTime() throws Exception {
final BusinessAccountModelDao account = new BusinessAccountModelDao(UUID.randomUUID(), UUID.randomUUID().toString(), UUID.randomUUID().toString(), BigDecimal.ONE, clock.getUTCToday(),
BigDecimal.TEN, "ERROR_NOT_ENOUGH_FUNDS", "CreditCard", "Visa", "FRANCE", "USD", clock.getUTCNow(), clock.getUTCNow());
accountSqlDao.createAccount(account, internalCallContext);
- final TimeSeriesData data = analyticsUserApi.getAccountsCreatedOverTime(tenantContext);
+ final TimeSeriesData data = analyticsUserApi.getAccountsCreatedOverTime(callContext);
Assert.assertEquals(data.getDates().size(), 1);
Assert.assertEquals(data.getDates().get(0), clock.getUTCToday());
Assert.assertEquals(data.getValues().size(), 1);
@@ -147,11 +81,11 @@ public class TestDefaultAnalyticsUserApi extends AnalyticsTestSuiteWithEmbeddedD
);
subscriptionTransitionSqlDao.createTransition(transition, internalCallContext);
- final TimeSeriesData notFoundData = analyticsUserApi.getSubscriptionsCreatedOverTime(productType, UUID.randomUUID().toString(), tenantContext);
+ final TimeSeriesData notFoundData = analyticsUserApi.getSubscriptionsCreatedOverTime(productType, UUID.randomUUID().toString(), callContext);
Assert.assertEquals(notFoundData.getDates().size(), 0);
Assert.assertEquals(notFoundData.getValues().size(), 0);
- final TimeSeriesData data = analyticsUserApi.getSubscriptionsCreatedOverTime(productType, phase.getName(), tenantContext);
+ final TimeSeriesData data = analyticsUserApi.getSubscriptionsCreatedOverTime(productType, phase.getName(), callContext);
Assert.assertEquals(data.getDates().size(), 1);
Assert.assertEquals(data.getDates().get(0), clock.getUTCToday());
Assert.assertEquals(data.getValues().size(), 1);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
index d26faf9..58e6d46 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
@@ -24,7 +24,6 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.mockito.Mockito;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -40,7 +39,6 @@ import com.ning.billing.analytics.model.BusinessSubscriptionTransitionModelDao;
import com.ning.billing.analytics.utils.Rounder;
import com.ning.billing.catalog.api.Catalog;
import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.catalog.api.PhaseType;
import com.ning.billing.catalog.api.Plan;
@@ -49,8 +47,6 @@ import com.ning.billing.catalog.api.Product;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.mock.MockPlan;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
@@ -61,21 +57,17 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
private static final String ACCOUNT_KEY = "pierre-143343-vcc";
private static final String CURRENCY = UUID.randomUUID().toString();
- private final Clock clock = new DefaultClock();
private final Product product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
private final Plan plan = new MockPlan("platinum-monthly", product);
private final PlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
- private BusinessSubscriptionTransitionSqlDao businessSubscriptionTransitionSqlDao;
private BusinessSubscriptionTransitionModelDao transition;
- private BusinessAccountSqlDao businessAccountSqlDao;
private BusinessAccountModelDao account;
- private final CatalogService catalogService = Mockito.mock(CatalogService.class);
private final Catalog catalog = Mockito.mock(Catalog.class);
@BeforeClass(groups = "slow")
- public void setup() throws IOException, ClassNotFoundException, SQLException, CatalogApiException {
+ public void setupMocks() throws IOException, ClassNotFoundException, SQLException, CatalogApiException {
Mockito.when(catalog.findPlan(Mockito.anyString(), Mockito.<DateTime>any())).thenReturn(plan);
Mockito.when(catalog.findPlan(Mockito.anyString(), Mockito.<DateTime>any(), Mockito.<DateTime>any())).thenReturn(plan);
Mockito.when(catalog.findPhase(Mockito.anyString(), Mockito.<DateTime>any(), Mockito.<DateTime>any())).thenReturn(phase);
@@ -93,31 +85,11 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
transition = new BusinessSubscriptionTransitionModelDao(TOTAL_ORDERING, BUNDLE_ID, EXTERNAL_KEY, ACCOUNT_ID, ACCOUNT_KEY,
UUID.randomUUID(), requestedTimestamp, event, prevSubscription, nextSubscription);
-
- final IDBI dbi = helper.getDBI();
- businessSubscriptionTransitionSqlDao = dbi.onDemand(BusinessSubscriptionTransitionSqlDao.class);
-
- // Healthcheck test to make sure MySQL is setup properly
- try {
- businessSubscriptionTransitionSqlDao.test(internalCallContext);
- } catch (Throwable t) {
- Assert.fail(t.toString());
- }
}
private void setupBusinessAccount() {
account = new BusinessAccountModelDao(UUID.randomUUID(), ACCOUNT_KEY, UUID.randomUUID().toString(), BigDecimal.ONE, clock.getUTCToday(),
BigDecimal.TEN, "ERROR_NOT_ENOUGH_FUNDS", "CreditCard", "Visa", "FRANCE", CURRENCY, clock.getUTCNow(), clock.getUTCNow());
-
- final IDBI dbi = helper.getDBI();
- businessAccountSqlDao = dbi.onDemand(BusinessAccountSqlDao.class);
-
- // Healthcheck test to make sure MySQL is setup properly
- try {
- businessAccountSqlDao.test(internalCallContext);
- } catch (Throwable t) {
- Assert.fail(t.toString());
- }
}
@Test(groups = "slow")
@@ -134,9 +106,9 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
null,
transition.getNextSubscription()
);
- businessSubscriptionTransitionSqlDao.createTransition(transitionWithNullPrev, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transitionWithNullPrev, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
Assert.assertEquals(transitions.get(0), transitionWithNullPrev);
}
@@ -155,9 +127,9 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
transition.getPreviousSubscription(),
null
);
- businessSubscriptionTransitionSqlDao.createTransition(transitionWithNullNext, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transitionWithNullNext, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
Assert.assertEquals(transitions.get(0), transitionWithNullNext);
}
@@ -177,9 +149,9 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
subscriptionWithNullFields,
subscriptionWithNullFields
);
- businessSubscriptionTransitionSqlDao.createTransition(transitionWithNullFields, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transitionWithNullFields, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
Assert.assertEquals(transitions.get(0), transitionWithNullFields);
}
@@ -199,9 +171,9 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
subscriptionWithNullPlanAndPhase,
subscriptionWithNullPlanAndPhase
);
- businessSubscriptionTransitionSqlDao.createTransition(transitionWithNullPlanAndPhase, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transitionWithNullPlanAndPhase, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
Assert.assertEquals(transitions.get(0).getExternalKey(), transition.getExternalKey());
Assert.assertEquals(transitions.get(0).getRequestedTimestamp(), transition.getRequestedTimestamp());
@@ -225,9 +197,9 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
subscriptionWithNullPlan,
subscriptionWithNullPlan
);
- businessSubscriptionTransitionSqlDao.createTransition(transitionWithNullPlan, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transitionWithNullPlan, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
// Null Plan but Phase - we don't turn the subscription into a null
Assert.assertEquals(transitions.get(0), transitionWithNullPlan);
@@ -248,9 +220,9 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
subscriptionWithNullPhase,
subscriptionWithNullPhase
);
- businessSubscriptionTransitionSqlDao.createTransition(transitionWithNullPhase, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transitionWithNullPhase, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
Assert.assertEquals(transitions.get(0).getExternalKey(), transition.getExternalKey());
Assert.assertEquals(transitions.get(0).getRequestedTimestamp(), transition.getRequestedTimestamp());
@@ -264,20 +236,20 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
@Test(groups = "slow")
public void testCreateAndRetrieveTransitions() {
- businessSubscriptionTransitionSqlDao.createTransition(transition, internalCallContext);
+ subscriptionTransitionSqlDao.createTransition(transition, internalCallContext);
- final List<BusinessSubscriptionTransitionModelDao> transitions = businessSubscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
+ final List<BusinessSubscriptionTransitionModelDao> transitions = subscriptionTransitionSqlDao.getTransitionsByKey(EXTERNAL_KEY, internalCallContext);
Assert.assertEquals(transitions.size(), 1);
Assert.assertEquals(transitions.get(0), transition);
- Assert.assertEquals(businessSubscriptionTransitionSqlDao.getTransitionsByKey("Doesn't exist", internalCallContext).size(), 0);
+ Assert.assertEquals(subscriptionTransitionSqlDao.getTransitionsByKey("Doesn't exist", internalCallContext).size(), 0);
}
@Test(groups = "slow")
public void testCreateSaveAndRetrieveAccounts() {
// Create and retrieve an account
- businessAccountSqlDao.createAccount(account, internalCallContext);
- final BusinessAccountModelDao foundAccount = businessAccountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext);
+ accountSqlDao.createAccount(account, internalCallContext);
+ final BusinessAccountModelDao foundAccount = accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext);
Assert.assertEquals(foundAccount.getCreatedDate().getMillis(), account.getCreatedDate().getMillis());
Assert.assertEquals(foundAccount.getUpdatedDate().getMillis(), account.getUpdatedDate().getMillis());
Assert.assertTrue(foundAccount.equals(account));
@@ -286,14 +258,14 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
account.setBalance(BigDecimal.TEN);
account.setPaymentMethod("PayPal");
account.setCurrency("CAD");
- businessAccountSqlDao.saveAccount(account, internalCallContext);
+ accountSqlDao.saveAccount(account, internalCallContext);
// Verify the save worked as expected
- account = businessAccountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext);
+ account = accountSqlDao.getAccountByKey(ACCOUNT_KEY, internalCallContext);
Assert.assertEquals(Rounder.round(BigDecimal.TEN), account.getRoundedBalance());
Assert.assertEquals("PayPal", account.getPaymentMethod());
Assert.assertEquals("CAD", account.getCurrency());
// ACCOUNT not found
- Assert.assertNull(businessAccountSqlDao.getAccountByKey("Doesn't exist", internalCallContext));
+ Assert.assertNull(accountSqlDao.getAccountByKey("Doesn't exist", internalCallContext));
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java
index 59228ab..ca69f76 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountFieldSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessAccountFieldModelDao;
public class TestBusinessAccountFieldSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessAccountFieldSqlDao accountFieldSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- accountFieldSqlDao = dbi.onDemand(BusinessAccountFieldSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final UUID accountId = UUID.randomUUID();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountTagSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountTagSqlDao.java
index 183b2f1..fe3d38d 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountTagSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessAccountTagSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessAccountTagModelDao;
public class TestBusinessAccountTagSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessAccountTagSqlDao accountTagSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- accountTagSqlDao = dbi.onDemand(BusinessAccountTagSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final UUID accountId = UUID.randomUUID();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java
index 84521f6..976d056 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceFieldSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessInvoiceFieldModelDao;
public class TestBusinessInvoiceFieldSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessInvoiceFieldSqlDao invoiceFieldSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoiceFieldSqlDao = dbi.onDemand(BusinessInvoiceFieldSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String invoiceId = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceItemSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceItemSqlDao.java
index 86c8e40..5d0329b 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceItemSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceItemSqlDao.java
@@ -21,29 +21,15 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
import com.ning.billing.analytics.model.BusinessInvoiceItemModelDao;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
public class TestBusinessInvoiceItemSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private final Clock clock = new DefaultClock();
-
- private BusinessInvoiceItemSqlDao invoiceItemSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoiceItemSqlDao = dbi.onDemand(BusinessInvoiceItemSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final UUID invoiceId = UUID.randomUUID();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java
index 2fb2c6d..2569f3d 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentFieldSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessInvoicePaymentFieldModelDao;
public class TestBusinessInvoicePaymentFieldSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessInvoicePaymentFieldSqlDao invoicePaymentFieldSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoicePaymentFieldSqlDao = dbi.onDemand(BusinessInvoicePaymentFieldSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String paymentId = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentSqlDao.java
index 3811465..7e76cf9 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentSqlDao.java
@@ -21,9 +21,7 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -32,14 +30,6 @@ import com.ning.billing.catalog.api.Currency;
public class TestBusinessInvoicePaymentSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessInvoicePaymentSqlDao invoicePaymentSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoicePaymentSqlDao = dbi.onDemand(BusinessInvoicePaymentSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String extFirstPaymentRefId = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentTagSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentTagSqlDao.java
index 1b63714..d96103f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentTagSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoicePaymentTagSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessInvoicePaymentTagModelDao;
public class TestBusinessInvoicePaymentTagSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessInvoicePaymentTagSqlDao invoicePaymentTagSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoicePaymentTagSqlDao = dbi.onDemand(BusinessInvoicePaymentTagSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String paymentId = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java
index 7b54ead..1084a83 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java
@@ -21,29 +21,15 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
import com.ning.billing.analytics.model.BusinessInvoiceModelDao;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
public class TestBusinessInvoiceSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private final Clock clock = new DefaultClock();
-
- private BusinessInvoiceSqlDao invoiceSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoiceSqlDao = dbi.onDemand(BusinessInvoiceSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final UUID invoiceId = UUID.randomUUID();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceTagSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceTagSqlDao.java
index 938e32e..eb53bc0 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceTagSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceTagSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessInvoiceTagModelDao;
public class TestBusinessInvoiceTagSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessInvoiceTagSqlDao invoiceTagSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- invoiceTagSqlDao = dbi.onDemand(BusinessInvoiceTagSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String invoiceId = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessOverdueStatusSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessOverdueStatusSqlDao.java
index 6faad86..57ee193 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessOverdueStatusSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessOverdueStatusSqlDao.java
@@ -20,9 +20,7 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -30,14 +28,6 @@ import com.ning.billing.analytics.model.BusinessOverdueStatusModelDao;
public class TestBusinessOverdueStatusSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessOverdueStatusSqlDao overdueStatusSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- overdueStatusSqlDao = dbi.onDemand(BusinessOverdueStatusSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCreate() throws Exception {
final String accountKey = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java
index ba1fc93..8e4a09f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionFieldSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessSubscriptionTransitionFieldModel
public class TestBusinessSubscriptionTransitionFieldSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessSubscriptionTransitionFieldSqlDao subscriptionTransitionFieldSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- subscriptionTransitionFieldSqlDao = dbi.onDemand(BusinessSubscriptionTransitionFieldSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String accountKey = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionTagSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionTagSqlDao.java
index 627de79..9e6c9e7 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionTagSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessSubscriptionTransitionTagSqlDao.java
@@ -19,9 +19,7 @@ package com.ning.billing.analytics.dao;
import java.util.List;
import java.util.UUID;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.analytics.AnalyticsTestSuiteWithEmbeddedDB;
@@ -29,14 +27,6 @@ import com.ning.billing.analytics.model.BusinessSubscriptionTransitionTagModelDa
public class TestBusinessSubscriptionTransitionTagSqlDao extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessSubscriptionTransitionTagSqlDao subscriptionTransitionTagSqlDao;
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final IDBI dbi = helper.getDBI();
- subscriptionTransitionTagSqlDao = dbi.onDemand(BusinessSubscriptionTransitionTagSqlDao.class);
- }
-
@Test(groups = "slow")
public void testCRUD() throws Exception {
final String accountKey = UUID.randomUUID().toString();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java
new file mode 100644
index 0000000..5956954
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java
@@ -0,0 +1,80 @@
+/*
+ * 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.analytics.glue;
+
+import java.util.Properties;
+
+import org.mockito.Mockito;
+import org.skife.config.ConfigSource;
+import org.skife.config.SimplePropertyConfigSource;
+
+import com.ning.billing.analytics.setup.AnalyticsModule;
+import com.ning.billing.catalog.MockCatalogModule;
+import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.mock.glue.MockAccountModule;
+import com.ning.billing.mock.glue.MockEntitlementModule;
+import com.ning.billing.mock.glue.MockGlobalLockerModule;
+import com.ning.billing.mock.glue.MockInvoiceModule;
+import com.ning.billing.mock.glue.MockJunctionModule;
+import com.ning.billing.mock.glue.MockOverdueModule;
+import com.ning.billing.mock.glue.MockPaymentModule;
+import com.ning.billing.payment.dao.PaymentDao;
+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;
+import com.ning.billing.util.glue.NotificationQueueModule;
+import com.ning.billing.util.glue.TagStoreModule;
+
+public class TestAnalyticsModule extends AnalyticsModule {
+
+ protected final ConfigSource configSource;
+
+ public TestAnalyticsModule() {
+ 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 MockAccountModule());
+ install(new MockCatalogModule());
+ install(new MockEntitlementModule());
+ install(new MockInvoiceModule());
+ install(new MockJunctionModule());
+ install(new MockOverdueModule());
+ install(new MockPaymentModule());
+ install(new MockGlobalLockerModule());
+ install(new NotificationQueueModule());
+ install(new TagStoreModule());
+
+ bind(InvoiceDao.class).toInstance(Mockito.mock(InvoiceDao.class));
+ bind(PaymentDao.class).toInstance(Mockito.mock(PaymentDao.class));
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java
new file mode 100644
index 0000000..55f675e
--- /dev/null
+++ b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java
@@ -0,0 +1,69 @@
+/*
+ * 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.analytics.glue;
+
+import org.mockito.Mockito;
+
+import com.ning.billing.GuicyKillbillTestNoDBModule;
+import com.ning.billing.analytics.MockBusinessSubscriptionTransitionSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountSqlDao;
+import com.ning.billing.analytics.dao.BusinessAccountTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceItemSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoicePaymentTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceSqlDao;
+import com.ning.billing.analytics.dao.BusinessInvoiceTagSqlDao;
+import com.ning.billing.analytics.dao.BusinessOverdueStatusSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionFieldSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionSqlDao;
+import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionTagSqlDao;
+import com.ning.billing.mock.glue.MockNonEntityDaoModule;
+import com.ning.billing.util.bus.InMemoryBusModule;
+
+public class TestAnalyticsModuleNoDB extends TestAnalyticsModule {
+
+ @Override
+ protected void installAnalyticsSqlDao() {
+ bind(BusinessSubscriptionTransitionSqlDao.class).to(MockBusinessSubscriptionTransitionSqlDao.class).asEagerSingleton();
+
+ bind(BusinessAccountSqlDao.class).toInstance(Mockito.mock(BusinessAccountSqlDao.class));
+ bind(BusinessAccountTagSqlDao.class).toInstance(Mockito.mock(BusinessAccountTagSqlDao.class));
+ bind(BusinessAccountFieldSqlDao.class).toInstance(Mockito.mock(BusinessAccountFieldSqlDao.class));
+ bind(BusinessInvoiceFieldSqlDao.class).toInstance(Mockito.mock(BusinessInvoiceFieldSqlDao.class));
+ bind(BusinessInvoiceItemSqlDao.class).toInstance(Mockito.mock(BusinessInvoiceItemSqlDao.class));
+ bind(BusinessInvoicePaymentFieldSqlDao.class).toInstance(Mockito.mock(BusinessInvoicePaymentFieldSqlDao.class));
+ bind(BusinessInvoicePaymentSqlDao.class).toInstance(Mockito.mock(BusinessInvoicePaymentSqlDao.class));
+ bind(BusinessInvoicePaymentTagSqlDao.class).toInstance(Mockito.mock(BusinessInvoicePaymentTagSqlDao.class));
+ bind(BusinessInvoiceSqlDao.class).toInstance(Mockito.mock(BusinessInvoiceSqlDao.class));
+ bind(BusinessInvoiceTagSqlDao.class).toInstance(Mockito.mock(BusinessInvoiceTagSqlDao.class));
+ bind(BusinessOverdueStatusSqlDao.class).toInstance(Mockito.mock(BusinessOverdueStatusSqlDao.class));
+ bind(BusinessSubscriptionTransitionFieldSqlDao.class).toInstance(Mockito.mock(BusinessSubscriptionTransitionFieldSqlDao.class));
+ bind(BusinessSubscriptionTransitionTagSqlDao.class).toInstance(Mockito.mock(BusinessSubscriptionTransitionTagSqlDao.class));
+ }
+
+ @Override
+ public void configure() {
+ super.configure();
+
+ install(new GuicyKillbillTestNoDBModule());
+ install(new MockNonEntityDaoModule());
+ install(new InMemoryBusModule(configSource));
+ }
+}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java
index 5634ca6..7ea70a2 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccount.java
@@ -25,13 +25,9 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.account.api.Account;
-import com.ning.billing.analytics.AnalyticsTestSuite;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessAccount extends AnalyticsTestSuite {
-
- private final Clock clock = new DefaultClock();
+public class TestBusinessAccount extends AnalyticsTestSuiteNoDB {
private BusinessAccountModelDao account;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountField.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountField.java
index 8ded19a..820f2c2 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountField.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountField.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessAccountField extends AnalyticsTestSuite {
+public class TestBusinessAccountField extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountTag.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountTag.java
index 7e84b39..752b4ad 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountTag.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessAccountTag.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessAccountTag extends AnalyticsTestSuite {
+public class TestBusinessAccountTag extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java
index d8c97c5..8bebd93 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java
@@ -24,14 +24,10 @@ import org.joda.time.LocalDate;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
-public class TestBusinessInvoice extends AnalyticsTestSuite {
-
- private final Clock clock = new DefaultClock();
+public class TestBusinessInvoice extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceField.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceField.java
index ce444fa..9fbee64 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceField.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceField.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessInvoiceField extends AnalyticsTestSuite {
+public class TestBusinessInvoiceField extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceItem.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceItem.java
index a2f28f5..592ee3b 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceItem.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceItem.java
@@ -24,14 +24,10 @@ import org.joda.time.LocalDate;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.clock.DefaultClock;
-public class TestBusinessInvoiceItem extends AnalyticsTestSuite {
-
- private final Clock clock = new DefaultClock();
+public class TestBusinessInvoiceItem extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePayment.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePayment.java
index 5292aac..116a2ad 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePayment.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePayment.java
@@ -24,10 +24,10 @@ import org.joda.time.DateTimeZone;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.catalog.api.Currency;
-public class TestBusinessInvoicePayment extends AnalyticsTestSuite {
+public class TestBusinessInvoicePayment extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentField.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentField.java
index d2b5d22..d94243f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentField.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentField.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessInvoicePaymentField extends AnalyticsTestSuite {
+public class TestBusinessInvoicePaymentField extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentTag.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentTag.java
index 6d4f1f3..2a22d85 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentTag.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoicePaymentTag.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessInvoicePaymentTag extends AnalyticsTestSuite {
+public class TestBusinessInvoicePaymentTag extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceTag.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceTag.java
index 38c882c..6c919f6 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceTag.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoiceTag.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessInvoiceTag extends AnalyticsTestSuite {
+public class TestBusinessInvoiceTag extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessOverdueStatus.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessOverdueStatus.java
index 8b30bbd..6078c72 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessOverdueStatus.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessOverdueStatus.java
@@ -23,9 +23,9 @@ import org.joda.time.DateTimeZone;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessOverdueStatus extends AnalyticsTestSuite {
+public class TestBusinessOverdueStatus extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java
index 5e7b918..14a4fc9 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java
@@ -24,13 +24,12 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockProduct;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.Catalog;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.PhaseType;
import com.ning.billing.catalog.api.Plan;
import com.ning.billing.catalog.api.PlanPhase;
@@ -42,7 +41,7 @@ import com.ning.billing.mock.MockSubscription;
import static com.ning.billing.catalog.api.Currency.USD;
-public class TestBusinessSubscription extends AnalyticsTestSuite {
+public class TestBusinessSubscription extends AnalyticsTestSuiteNoDB {
final Object[][] catalogMapping = {
{BillingPeriod.NO_BILLING_PERIOD, 369.9500, 0.0000},
@@ -115,7 +114,6 @@ public class TestBusinessSubscription extends AnalyticsTestSuite {
private Subscription isubscription;
private BusinessSubscription subscription;
- private final CatalogService catalogService = Mockito.mock(CatalogService.class);
private final Catalog catalog = Mockito.mock(Catalog.class);
@BeforeMethod(groups = "fast")
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java
index 75c48ef..7b85925 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java
@@ -22,12 +22,11 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockProduct;
import com.ning.billing.catalog.api.Catalog;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.PhaseType;
import com.ning.billing.catalog.api.Plan;
import com.ning.billing.catalog.api.PlanPhase;
@@ -37,14 +36,13 @@ import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.mock.MockPlan;
import com.ning.billing.mock.MockSubscription;
-public class TestBusinessSubscriptionEvent extends AnalyticsTestSuite {
+public class TestBusinessSubscriptionEvent extends AnalyticsTestSuiteNoDB {
private Product product;
private Plan plan;
private PlanPhase phase;
private Subscription subscription;
- private final CatalogService catalogService = Mockito.mock(CatalogService.class);
private final Catalog catalog = Mockito.mock(Catalog.class);
@BeforeMethod(groups = "fast")
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java
index fc382a0..1440516 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java
@@ -25,12 +25,11 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockProduct;
import com.ning.billing.catalog.api.Catalog;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.PhaseType;
import com.ning.billing.catalog.api.Plan;
import com.ning.billing.catalog.api.PlanPhase;
@@ -42,7 +41,7 @@ import com.ning.billing.mock.MockSubscription;
import static com.ning.billing.catalog.api.Currency.USD;
-public class TestBusinessSubscriptionTransition extends AnalyticsTestSuite {
+public class TestBusinessSubscriptionTransition extends AnalyticsTestSuiteNoDB {
private BusinessSubscription prevSubscription;
private BusinessSubscription nextSubscription;
@@ -56,7 +55,6 @@ public class TestBusinessSubscriptionTransition extends AnalyticsTestSuite {
private UUID subscriptionId;
private BusinessSubscriptionTransitionModelDao transition;
- private final CatalogService catalogService = Mockito.mock(CatalogService.class);
private final Catalog catalog = Mockito.mock(Catalog.class);
@BeforeMethod(alwaysRun = true)
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionField.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionField.java
index 5e32362..ab80b9b 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionField.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionField.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessSubscriptionTransitionField extends AnalyticsTestSuite {
+public class TestBusinessSubscriptionTransitionField extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionTag.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionTag.java
index 0a9e94e..fb4893c 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionTag.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransitionTag.java
@@ -21,9 +21,9 @@ import java.util.UUID;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestBusinessSubscriptionTransitionTag extends AnalyticsTestSuite {
+public class TestBusinessSubscriptionTransitionTag extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testEquals() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessInvoiceRecorder.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessInvoiceRecorder.java
index 3b778df..4757505 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessInvoiceRecorder.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessInvoiceRecorder.java
@@ -24,30 +24,15 @@ import org.mockito.Mockito;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.dao.BusinessInvoiceSqlDao;
import com.ning.billing.analytics.model.BusinessInvoiceItemModelDao;
-import com.ning.billing.catalog.MockCatalog;
-import com.ning.billing.catalog.MockCatalogService;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoiceItemType;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
-public class TestBusinessInvoiceRecorder extends AnalyticsTestSuite {
-
- private final AccountInternalApi accountApi = Mockito.mock(AccountInternalApi.class);
- private final EntitlementInternalApi entitlementApi = Mockito.mock(EntitlementInternalApi.class);
- private final InvoiceInternalApi invoiceApi = Mockito.mock(InvoiceInternalApi.class);
- private final BusinessAccountDao bacDao = Mockito.mock(BusinessAccountDao.class);
- private final BusinessInvoiceSqlDao sqlDao = Mockito.mock(BusinessInvoiceSqlDao.class);
+public class TestBusinessInvoiceRecorder extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testShouldBeAbleToHandleNullFieldsInInvoiceItem() throws Exception {
- final BusinessInvoiceDao dao = new BusinessInvoiceDao(accountApi, entitlementApi, invoiceApi, bacDao,
- sqlDao, new MockCatalogService(new MockCatalog()));
-
final InvoiceItem invoiceItem = Mockito.mock(InvoiceItem.class);
Mockito.when(invoiceItem.getAmount()).thenReturn(BigDecimal.TEN);
Mockito.when(invoiceItem.getCurrency()).thenReturn(Currency.AUD);
@@ -59,7 +44,7 @@ public class TestBusinessInvoiceRecorder extends AnalyticsTestSuite {
Mockito.when(invoiceItem.getStartDate()).thenReturn(new LocalDate(1985, 9, 10));
Mockito.when(invoiceItem.getInvoiceItemType()).thenReturn(InvoiceItemType.CREDIT_ADJ);
- final BusinessInvoiceItemModelDao bii = dao.createBusinessInvoiceItem(invoiceItem, internalCallContext);
+ final BusinessInvoiceItemModelDao bii = invoiceDao.createBusinessInvoiceItem(invoiceItem, internalCallContext);
Assert.assertNotNull(bii);
Assert.assertEquals(bii.getAmount(), invoiceItem.getAmount());
Assert.assertEquals(bii.getCurrency(), invoiceItem.getCurrency());
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransitionRecorder.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransitionRecorder.java
index a58ccbf..313448f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransitionRecorder.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransitionRecorder.java
@@ -25,22 +25,17 @@ import org.testng.Assert;
import org.testng.annotations.Test;
import com.ning.billing.account.api.Account;
-import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionSqlDao;
import com.ning.billing.analytics.model.BusinessSubscriptionTransitionModelDao;
import com.ning.billing.catalog.api.Catalog;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.entitlement.api.SubscriptionTransitionType;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.util.callcontext.InternalTenantContext;
-import com.ning.billing.util.clock.DefaultClock;
import com.ning.billing.util.events.EffectiveSubscriptionInternalEvent;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
import com.google.common.collect.ImmutableList;
-public class TestBusinessSubscriptionTransitionRecorder extends AnalyticsTestSuite {
+public class TestBusinessSubscriptionTransitionRecorder extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testCreateAddOn() throws Exception {
@@ -50,25 +45,19 @@ public class TestBusinessSubscriptionTransitionRecorder extends AnalyticsTestSui
final UUID subscriptionId = UUID.randomUUID();
// Setup the catalog
- final CatalogService catalogService = Mockito.mock(CatalogService.class);
Mockito.when(catalogService.getFullCatalog()).thenReturn(Mockito.mock(Catalog.class));
- // Setup the dao
- final BusinessSubscriptionTransitionSqlDao sqlDao = new MockBusinessSubscriptionTransitionSqlDao();
-
// Setup the entitlement API
final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
Mockito.when(bundle.getId()).thenReturn(bundleId);
Mockito.when(bundle.getAccountId()).thenReturn(accountId);
Mockito.when(bundle.getExternalKey()).thenReturn(externalKey.toString());
- final EntitlementInternalApi entitlementApi = Mockito.mock(EntitlementInternalApi.class);
- Mockito.when(entitlementApi.getBundleFromId(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(bundle);
+ Mockito.when(entitlementInternalApi.getBundleFromId(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(bundle);
// Setup the account API
final Account account = Mockito.mock(Account.class);
Mockito.when(account.getExternalKey()).thenReturn(externalKey.toString());
- final AccountInternalApi accountApi = Mockito.mock(AccountInternalApi.class);
- Mockito.when(accountApi.getAccountById(Mockito.eq(bundle.getAccountId()), Mockito.<InternalTenantContext>any())).thenReturn(account);
+ Mockito.when(accountInternalApi.getAccountById(Mockito.eq(bundle.getAccountId()), Mockito.<InternalTenantContext>any())).thenReturn(account);
// Create an new subscription event
final EffectiveSubscriptionInternalEvent eventEffective = Mockito.mock(EffectiveSubscriptionInternalEvent.class);
@@ -82,15 +71,14 @@ public class TestBusinessSubscriptionTransitionRecorder extends AnalyticsTestSui
final Subscription subscription = Mockito.mock(Subscription.class);
Mockito.when(subscription.getId()).thenReturn(subscriptionId);
- Mockito.when(entitlementApi.getAllTransitions(subscription, internalCallContext)).thenReturn(ImmutableList.<EffectiveSubscriptionInternalEvent>of(eventEffective));
+ Mockito.when(entitlementInternalApi.getAllTransitions(Mockito.eq(subscription), Mockito.<InternalTenantContext>any())).thenReturn(ImmutableList.<EffectiveSubscriptionInternalEvent>of(eventEffective));
- Mockito.when(entitlementApi.getSubscriptionsForBundle(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(ImmutableList.<Subscription>of(subscription));
+ Mockito.when(entitlementInternalApi.getSubscriptionsForBundle(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(ImmutableList.<Subscription>of(subscription));
- final BusinessSubscriptionTransitionDao dao = new BusinessSubscriptionTransitionDao(sqlDao, catalogService, entitlementApi, accountApi, new DefaultClock());
- dao.rebuildTransitionsForBundle(bundle.getId(), internalCallContext);
+ subscriptionTransitionDao.rebuildTransitionsForBundle(bundle.getId(), internalCallContext);
- Assert.assertEquals(sqlDao.getTransitionsByKey(externalKey.toString(), internalCallContext).size(), 1);
- final BusinessSubscriptionTransitionModelDao transition = sqlDao.getTransitionsByKey(externalKey.toString(), internalCallContext).get(0);
+ Assert.assertEquals(subscriptionTransitionSqlDao.getTransitionsByKey(externalKey.toString(), internalCallContext).size(), 1);
+ final BusinessSubscriptionTransitionModelDao transition = subscriptionTransitionSqlDao.getTransitionsByKey(externalKey.toString(), internalCallContext).get(0);
Assert.assertEquals(transition.getTotalOrdering(), (long) eventEffective.getTotalOrdering());
Assert.assertEquals(transition.getAccountKey(), externalKey.toString());
// Make sure all the prev_ columns are null
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java
index e77fa7b..23e1b42 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessTagRecorder.java
@@ -19,128 +19,30 @@ package com.ning.billing.analytics;
import java.util.UUID;
import org.mockito.Mockito;
-import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.ning.billing.ObjectType;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.AccountUserApi;
-import com.ning.billing.account.api.svcs.DefaultAccountInternalApi;
-import com.ning.billing.account.api.user.DefaultAccountUserApi;
-import com.ning.billing.account.dao.AccountDao;
-import com.ning.billing.account.dao.DefaultAccountDao;
-import com.ning.billing.analytics.dao.BusinessAccountTagSqlDao;
-import com.ning.billing.analytics.dao.BusinessInvoicePaymentTagSqlDao;
-import com.ning.billing.analytics.dao.BusinessInvoiceTagSqlDao;
-import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionTagSqlDao;
-import com.ning.billing.catalog.DefaultCatalogService;
-import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.io.VersionedCatalogLoader;
-import com.ning.billing.entitlement.alignment.PlanAligner;
-import com.ning.billing.entitlement.api.svcs.DefaultEntitlementInternalApi;
-import com.ning.billing.entitlement.api.user.DefaultEntitlementUserApi;
-import com.ning.billing.entitlement.api.user.DefaultSubscriptionApiService;
-import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
-import com.ning.billing.entitlement.engine.addon.AddonUtils;
-import com.ning.billing.entitlement.engine.dao.DefaultEntitlementDao;
-import com.ning.billing.entitlement.engine.dao.EntitlementDao;
import com.ning.billing.mock.MockAccountBuilder;
-import com.ning.billing.util.bus.InMemoryInternalBus;
-import com.ning.billing.util.cache.CacheControllerDispatcher;
-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.config.CatalogConfig;
-import com.ning.billing.util.dao.DefaultNonEntityDao;
-import com.ning.billing.util.dao.NonEntityDao;
-import com.ning.billing.util.notificationq.DefaultNotificationQueueService;
-import com.ning.billing.util.notificationq.NotificationQueueConfig;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-
+import com.ning.billing.util.callcontext.InternalCallContext;
public class TestBusinessTagRecorder extends AnalyticsTestSuiteWithEmbeddedDB {
- private BusinessAccountTagSqlDao accountTagSqlDao;
- private BusinessSubscriptionTransitionTagSqlDao subscriptionTransitionTagSqlDao;
- private InMemoryInternalBus eventBus;
- private DefaultCallContextFactory callContextFactory;
- private AccountInternalApi accountApi;
- private AccountUserApi accountUserApi;
- private EntitlementInternalApi entitlementApi;
- private EntitlementUserApi entitlementUserApi;
- private BusinessTagDao tagDao;
- private CacheControllerDispatcher controllerDispatcher;
-
- private NotificationQueueConfig config = new NotificationQueueConfig() {
- @Override
- public boolean isProcessingOff() {
- return false;
- }
-
- @Override
- public int getPrefetchAmount() {
- return 10;
- }
-
- @Override
- public long getSleepTimeMs() {
- return 3000;
- }
- };
-
- @BeforeMethod(groups = "slow")
- public void setUp() throws Exception {
- final Clock clock = new ClockMock();
- final IDBI dbi = helper.getDBI();
- controllerDispatcher = new CacheControllerDispatcher();
- final NonEntityDao nonEntityDao = new DefaultNonEntityDao(dbi);
- accountTagSqlDao = dbi.onDemand(BusinessAccountTagSqlDao.class);
- final BusinessInvoiceTagSqlDao invoiceTagSqlDao = dbi.onDemand(BusinessInvoiceTagSqlDao.class);
- final BusinessInvoicePaymentTagSqlDao invoicePaymentTagSqlDao = dbi.onDemand(BusinessInvoicePaymentTagSqlDao.class);
- subscriptionTransitionTagSqlDao = dbi.onDemand(BusinessSubscriptionTransitionTagSqlDao.class);
- eventBus = new InMemoryInternalBus();
- final AccountDao accountDao = new DefaultAccountDao(dbi, eventBus, clock, controllerDispatcher, new InternalCallContextFactory(new ClockMock(), nonEntityDao, controllerDispatcher), nonEntityDao);
- callContextFactory = new DefaultCallContextFactory(clock);
- final InternalCallContextFactory internalCallContextFactory = new InternalCallContextFactory(clock, nonEntityDao, controllerDispatcher);
- accountApi = new DefaultAccountInternalApi(accountDao);
- accountUserApi = new DefaultAccountUserApi(callContextFactory, internalCallContextFactory, accountDao);
- final CatalogService catalogService = new DefaultCatalogService(Mockito.mock(CatalogConfig.class), Mockito.mock(VersionedCatalogLoader.class));
- final AddonUtils addonUtils = new AddonUtils(catalogService);
- final DefaultNotificationQueueService notificationQueueService = new DefaultNotificationQueueService(dbi, clock, config, internalCallContextFactory, nonEntityDao, controllerDispatcher);
- final EntitlementDao entitlementDao = new DefaultEntitlementDao(dbi, clock, addonUtils, notificationQueueService, eventBus, catalogService, controllerDispatcher, nonEntityDao);
- final PlanAligner planAligner = new PlanAligner(catalogService);
- final DefaultSubscriptionApiService apiService = new DefaultSubscriptionApiService(clock, entitlementDao, catalogService, planAligner, addonUtils, internalCallContextFactory);
- entitlementApi = new DefaultEntitlementInternalApi(entitlementDao, apiService, clock, catalogService);
- entitlementUserApi = new DefaultEntitlementUserApi(clock, entitlementDao, catalogService, apiService, addonUtils, internalCallContextFactory);
- tagDao = new BusinessTagDao(accountTagSqlDao, invoicePaymentTagSqlDao, invoiceTagSqlDao, subscriptionTransitionTagSqlDao,
- accountApi, entitlementApi);
-
- eventBus.start();
- }
-
- @AfterMethod(groups = "slow")
- public void tearDown() throws Exception {
- eventBus.stop();
- }
-
@Test(groups = "slow")
public void testAddAndRemoveTagsForAccount() throws Exception {
final String name = UUID.randomUUID().toString().substring(0, 20);
final String accountKey = UUID.randomUUID().toString();
- final Account accountData = new MockAccountBuilder()
+ final Account accountData = new MockAccountBuilder(UUID.randomUUID())
.externalKey(accountKey)
.currency(Currency.MXN)
.build();
- final Account account = accountUserApi.createAccount(accountData, callContext);
- final UUID accountId = account.getId();
+ Mockito.when(accountInternalApi.getAccountById(Mockito.eq(accountData.getId()), Mockito.<InternalCallContext>any())).thenReturn(accountData);
+ Mockito.when(accountInternalApi.getAccountByKey(Mockito.eq(accountData.getExternalKey()), Mockito.<InternalCallContext>any())).thenReturn(accountData);
+ final UUID accountId = accountData.getId();
Assert.assertEquals(accountTagSqlDao.getTagsForAccountByKey(accountKey, internalCallContext).size(), 0);
tagDao.tagAdded(ObjectType.ACCOUNT, accountId, name, internalCallContext);
@@ -157,9 +59,15 @@ public class TestBusinessTagRecorder extends AnalyticsTestSuiteWithEmbeddedDB {
final Account accountData = new MockAccountBuilder()
.currency(Currency.MXN)
.build();
- final Account account = accountUserApi.createAccount(accountData, callContext);
- final SubscriptionBundle bundle = entitlementUserApi.createBundleForAccount(account.getId(), externalKey, callContext);
- final UUID bundleId = bundle.getId();
+ Mockito.when(accountInternalApi.getAccountById(Mockito.eq(accountData.getId()), Mockito.<InternalCallContext>any())).thenReturn(accountData);
+ Mockito.when(accountInternalApi.getAccountByKey(Mockito.eq(accountData.getExternalKey()), Mockito.<InternalCallContext>any())).thenReturn(accountData);
+
+ final UUID bundleId = UUID.randomUUID();
+ final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
+ Mockito.when(bundle.getId()).thenReturn(bundleId);
+ Mockito.when(bundle.getAccountId()).thenReturn(accountData.getId());
+ Mockito.when(bundle.getExternalKey()).thenReturn(externalKey);
+ Mockito.when(entitlementInternalApi.getBundleFromId(Mockito.eq(bundleId), Mockito.<InternalCallContext>any())).thenReturn(bundle);
Assert.assertEquals(subscriptionTransitionTagSqlDao.getTagsForBusinessSubscriptionTransitionByKey(externalKey, internalCallContext).size(), 0);
tagDao.tagAdded(ObjectType.BUNDLE, bundleId, name, internalCallContext);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestPaymentMethodUtils.java b/analytics/src/test/java/com/ning/billing/analytics/TestPaymentMethodUtils.java
index 5c6e2e3..576cd1e 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestPaymentMethodUtils.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestPaymentMethodUtils.java
@@ -24,7 +24,7 @@ import org.testng.annotations.Test;
import com.ning.billing.payment.api.PaymentMethodPlugin;
-public class TestPaymentMethodUtils {
+public class TestPaymentMethodUtils extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testUnknowns() throws Exception {
diff --git a/analytics/src/test/java/com/ning/billing/analytics/utils/TestRounder.java b/analytics/src/test/java/com/ning/billing/analytics/utils/TestRounder.java
index 75d0270..7c98700 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/utils/TestRounder.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/utils/TestRounder.java
@@ -21,9 +21,9 @@ import java.math.BigDecimal;
import org.testng.Assert;
import org.testng.annotations.Test;
-import com.ning.billing.analytics.AnalyticsTestSuite;
+import com.ning.billing.analytics.AnalyticsTestSuiteNoDB;
-public class TestRounder extends AnalyticsTestSuite {
+public class TestRounder extends AnalyticsTestSuiteNoDB {
@Test(groups = "fast")
public void testRound() throws Exception {
diff --git a/util/src/test/java/com/ning/billing/mock/glue/MockInvoiceModule.java b/util/src/test/java/com/ning/billing/mock/glue/MockInvoiceModule.java
index 5ecb4c3..fee931a 100644
--- a/util/src/test/java/com/ning/billing/mock/glue/MockInvoiceModule.java
+++ b/util/src/test/java/com/ning/billing/mock/glue/MockInvoiceModule.java
@@ -27,6 +27,7 @@ import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
import com.google.inject.AbstractModule;
public class MockInvoiceModule extends AbstractModule implements InvoiceModule {
+
@Override
public void installInvoiceUserApi() {
bind(InvoiceUserApi.class).toInstance(Mockito.mock(InvoiceUserApi.class));
diff --git a/util/src/test/java/com/ning/billing/mock/glue/MockPaymentModule.java b/util/src/test/java/com/ning/billing/mock/glue/MockPaymentModule.java
index d3505f0..0c1271c 100644
--- a/util/src/test/java/com/ning/billing/mock/glue/MockPaymentModule.java
+++ b/util/src/test/java/com/ning/billing/mock/glue/MockPaymentModule.java
@@ -19,12 +19,15 @@ package com.ning.billing.mock.glue;
import org.mockito.Mockito;
import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.util.svcapi.payment.PaymentInternalApi;
import com.google.inject.AbstractModule;
public class MockPaymentModule extends AbstractModule {
+
@Override
protected void configure() {
bind(PaymentApi.class).toInstance(Mockito.mock(PaymentApi.class));
+ bind(PaymentInternalApi.class).toInstance(Mockito.mock(PaymentInternalApi.class));
}
}
diff --git a/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java b/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
index 28d59a7..8e72a6e 100644
--- a/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
+++ b/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
@@ -50,6 +50,8 @@ public class MockAccountBuilder {
private String phone = "";
private boolean migrated;
private boolean isNotifiedForInvoices;
+ private DateTime createdDate = new DateTime(DateTimeZone.UTC);
+ private DateTime updatedDate = new DateTime(DateTimeZone.UTC);
public MockAccountBuilder() {
this(UUID.randomUUID());
@@ -177,16 +179,26 @@ public class MockAccountBuilder {
return this;
}
+ public MockAccountBuilder createdDate(final DateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ public MockAccountBuilder updatedDate(final DateTime updatedDate) {
+ this.updatedDate = updatedDate;
+ return this;
+ }
+
public Account build() {
return new Account() {
@Override
public DateTime getCreatedDate() {
- throw new UnsupportedOperationException();
+ return createdDate;
}
@Override
public DateTime getUpdatedDate() {
- throw new UnsupportedOperationException();
+ return updatedDate;
}
@Override