Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
index e5cd826..f4d6e66 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -17,32 +17,113 @@
package com.ning.billing.analytics;
import com.google.inject.Inject;
+import com.ning.billing.account.api.IAccount;
+import com.ning.billing.account.api.IAccountUserApi;
import com.ning.billing.analytics.dao.EventDao;
-import com.ning.billing.entitlement.api.user.ISubscription;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.entitlement.api.user.IApiListener;
+import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
+import com.ning.billing.entitlement.api.user.ISubscriptionBundle;
+import com.ning.billing.entitlement.api.user.ISubscriptionTransition;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class AnalyticsListener// implements IApiListener
+import java.util.List;
+
+public class AnalyticsListener implements IApiListener
{
private static final Logger log = LoggerFactory.getLogger(AnalyticsListener.class);
private final EventDao dao;
+ private final IEntitlementUserApi entitlementApi;
+ private final IAccountUserApi accountApi;
@Inject
- public AnalyticsListener(final EventDao dao)
+ public AnalyticsListener(final EventDao dao, final IEntitlementUserApi entitlementApi, final IAccountUserApi accountApi)
{
this.dao = dao;
+ this.entitlementApi = entitlementApi;
+ this.accountApi = accountApi;
+ }
+
+ @Override
+ public void subscriptionCreated(ISubscriptionTransition created)
+ {
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCreated(created.getNextPlan());
+ recordTransition(event, created);
+ }
+
+ @Override
+ public void subscriptionCancelled(ISubscriptionTransition cancelled)
+ {
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCancelled(cancelled.getNextPlan());
+ recordTransition(event, cancelled);
+ }
+
+ @Override
+ public void subscriptionChanged(ISubscriptionTransition changed)
+ {
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionChanged(changed.getNextPlan());
+ recordTransition(event, changed);
+ }
+
+ @Override
+ public void subscriptionPaused(ISubscriptionTransition paused)
+ {
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionPaused(paused.getNextPlan());
+ recordTransition(event, paused);
+ }
+
+ @Override
+ public void subscriptionResumed(ISubscriptionTransition resumed)
+ {
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionResumed(resumed.getNextPlan());
+ recordTransition(event, resumed);
+ }
+
+ @Override
+ public void subscriptionPhaseChanged(ISubscriptionTransition phaseChanged)
+ {
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionPhaseChanged(phaseChanged.getNextPlan(), phaseChanged.getNextState());
+ recordTransition(event, phaseChanged);
}
- public void recordTransition(final String key, final DateTime requestedDateTime, final BusinessSubscriptionEvent event, final ISubscription prev, final ISubscription next)
+ private void recordTransition(final BusinessSubscriptionEvent event, final ISubscriptionTransition transition)
{
- final BusinessSubscription prevSubscription = new BusinessSubscription(prev);
- final BusinessSubscription nextSubscription = new BusinessSubscription(next);
- recordTransition(key, requestedDateTime, event, prevSubscription, nextSubscription);
+ Currency currency = null;
+ String transitionKey = null;
+
+ // Retrieve key and currency via the bundle
+ final ISubscriptionBundle bundle = entitlementApi.getBundleFromId(transition.getBundleId());
+ if (bundle != null) {
+ transitionKey = bundle.getKey();
+
+ final IAccount account = accountApi.getAccountFromId(bundle.getAccountId());
+ if (account != null) {
+ currency = account.getCurrency();
+ }
+ }
+
+ // The ISubscriptionTransition interface gives us all the prev/next information we need but the start date
+ // of the previous plan. We need to retrieve it from our own transitions table
+ DateTime previousEffectiveTransitionTime = null;
+ final List<BusinessSubscriptionTransition> transitions = dao.getTransitions(transitionKey);
+ if (transitions != null) {
+ final BusinessSubscriptionTransition lastTransition = transitions.get(transitions.size() - 1);
+ if (lastTransition != null && lastTransition.getNextSubscription() != null) {
+ previousEffectiveTransitionTime = lastTransition.getNextSubscription().getStartDate();
+ }
+ }
+
+ // TODO Support currency changes
+ final BusinessSubscription prevSubscription = new BusinessSubscription(transition.getPreviousPlan(), transition.getPreviousPhase(), currency, previousEffectiveTransitionTime, transition.getPreviousState(), transition.getSubscriptionId(), transition.getBundleId());
+ final BusinessSubscription nextSubscription = new BusinessSubscription(transition.getNextPlan(), transition.getNextPhase(), currency, transition.getEffectiveTransitionTime(), transition.getNextState(), transition.getSubscriptionId(), transition.getBundleId());
+
+ recordTransition(transitionKey, transition.getRequestedTransitionTime(), event, prevSubscription, nextSubscription);
}
- public void recordTransition(final String key, final DateTime requestedDateTime, final BusinessSubscriptionEvent event, final BusinessSubscription prevSubscription, final BusinessSubscription nextSubscription)
+ private void recordTransition(final String key, final DateTime requestedDateTime, final BusinessSubscriptionEvent event, final BusinessSubscription prevSubscription, final BusinessSubscription nextSubscription)
{
final BusinessSubscriptionTransition transition = new BusinessSubscriptionTransition(
key,
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java
index 3d04806..1001c55 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java
@@ -16,7 +16,6 @@
package com.ning.billing.analytics;
-import com.ning.billing.account.api.IAccount;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.catalog.api.IDuration;
import com.ning.billing.catalog.api.IPlan;
@@ -33,6 +32,8 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.UUID;
+import static com.ning.billing.entitlement.api.user.ISubscription.SubscriptionState;
+
/**
* Describe a subscription for Analytics purposes
*/
@@ -54,11 +55,11 @@ public class BusinessSubscription
private final BigDecimal mrr;
private final String currency;
private final DateTime startDate;
- private final ISubscription.SubscriptionState state;
+ private final SubscriptionState state;
private final UUID subscriptionId;
private final UUID bundleId;
- public BusinessSubscription(final String productName, final String productType, final ProductCategory productCategory, final String slug, final String phase, final BigDecimal price, final BigDecimal mrr, final String currency, final DateTime startDate, final ISubscription.SubscriptionState state, final UUID subscriptionId, final UUID bundleId)
+ public BusinessSubscription(final String productName, final String productType, final ProductCategory productCategory, final String slug, final String phase, final BigDecimal price, final BigDecimal mrr, final String currency, final DateTime startDate, final SubscriptionState state, final UUID subscriptionId, final UUID bundleId)
{
this.productName = productName;
this.productType = productType;
@@ -74,10 +75,23 @@ public class BusinessSubscription
this.bundleId = bundleId;
}
- public BusinessSubscription(final ISubscription subscription)
+ /**
+ * For unit tests only.
+ * <p/>
+ * You can't really use this constructor in real life because the start date is likely not the one you want (you likely
+ * want the phase start date).
+ *
+ * @param subscription Subscription to use as a model
+ * @param currency Account currency
+ */
+ BusinessSubscription(final ISubscription subscription, final Currency currency)
+ {
+ this(subscription.getCurrentPlan(), subscription.getCurrentPhase(), currency, subscription.getStartDate(), subscription.getState(), subscription.getId(), subscription.getBundleId());
+ }
+
+ public BusinessSubscription(final IPlan currentPlan, final IPlanPhase currentPhase, final Currency currency, final DateTime startDate, final SubscriptionState state, final UUID subscriptionId, final UUID bundleId)
{
// Record plan information
- final IPlan currentPlan = subscription.getCurrentPlan();
if (currentPlan != null && currentPlan.getProduct() != null) {
final IProduct product = currentPlan.getProduct();
productName = product.getName();
@@ -96,7 +110,6 @@ public class BusinessSubscription
}
// Record phase information
- final IPlanPhase currentPhase = subscription.getCurrentPhase();
if (currentPhase != null) {
slug = currentPhase.getName();
@@ -123,17 +136,17 @@ public class BusinessSubscription
mrr = null;
}
- final IAccount account = subscription.getAccount();
- if (account != null && account.getCurrency() != null) {
- currency = account.getCurrency().toString();
+ if (currency != null) {
+ this.currency = currency.toString();
}
else {
- currency = null;
+ this.currency = null;
}
- startDate = subscription.getStartDate();
- state = subscription.getState();
- subscriptionId = subscription.getId();
- bundleId = subscription.getBundleId();
+
+ this.startDate = startDate;
+ this.state = state;
+ this.subscriptionId = subscriptionId;
+ this.bundleId = bundleId;
}
public UUID getBundleId()
@@ -196,7 +209,7 @@ public class BusinessSubscription
return startDate;
}
- public ISubscription.SubscriptionState getState()
+ public SubscriptionState getState()
{
return state;
}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
index f0d503d..865d8e7 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
@@ -19,7 +19,8 @@ package com.ning.billing.analytics;
import com.ning.billing.catalog.api.IPlan;
import com.ning.billing.catalog.api.IProduct;
import com.ning.billing.catalog.api.ProductCategory;
-import com.ning.billing.entitlement.api.user.ISubscription;
+
+import static com.ning.billing.entitlement.api.user.ISubscription.SubscriptionState;
/**
* Describe an event associated with a transition between two BusinessSubscription
@@ -78,56 +79,51 @@ public class BusinessSubscriptionEvent
return eventType;
}
- public static BusinessSubscriptionEvent subscriptionCreated(final ISubscription subscription)
+ public static BusinessSubscriptionEvent subscriptionCreated(final IPlan plan)
{
- return eventFromType(EventType.ADD, subscription);
+ return eventFromType(EventType.ADD, plan);
}
- public static BusinessSubscriptionEvent subscriptionCancelled(final ISubscription subscription)
+ public static BusinessSubscriptionEvent subscriptionCancelled(final IPlan plan)
{
- return eventFromType(EventType.CANCEL, subscription);
+ return eventFromType(EventType.CANCEL, plan);
}
- public static BusinessSubscriptionEvent subscriptionChanged(final ISubscription subscription)
+ public static BusinessSubscriptionEvent subscriptionChanged(final IPlan plan)
{
- return eventFromType(EventType.CHANGE, subscription);
+ return eventFromType(EventType.CHANGE, plan);
}
- public static BusinessSubscriptionEvent subscriptionPaused(final ISubscription subscription)
+ public static BusinessSubscriptionEvent subscriptionPaused(final IPlan plan)
{
- return eventFromType(EventType.PAUSE, subscription);
+ return eventFromType(EventType.PAUSE, plan);
}
- public static BusinessSubscriptionEvent subscriptionResumed(final ISubscription subscription)
+ public static BusinessSubscriptionEvent subscriptionResumed(final IPlan plan)
{
- return eventFromType(EventType.RESUME, subscription);
+ return eventFromType(EventType.RESUME, plan);
}
- public static BusinessSubscriptionEvent subscriptionPhaseChanged(final ISubscription subscription)
+ public static BusinessSubscriptionEvent subscriptionPhaseChanged(final IPlan plan, final SubscriptionState state)
{
- if (subscription.getState() != null && subscription.getState().equals(ISubscription.SubscriptionState.CANCELLED)) {
- return eventFromType(EventType.SYSTEM_CANCEL, subscription);
+ if (state != null && state.equals(SubscriptionState.CANCELLED)) {
+ return eventFromType(EventType.SYSTEM_CANCEL, plan);
}
else {
- return eventFromType(EventType.SYSTEM_CHANGE, subscription);
+ return eventFromType(EventType.SYSTEM_CHANGE, plan);
}
}
- private static BusinessSubscriptionEvent eventFromType(final EventType eventType, final ISubscription subscription)
+ private static BusinessSubscriptionEvent eventFromType(final EventType eventType, final IPlan plan)
{
- final ProductCategory category = getTypeFromSubscription(subscription);
+ final ProductCategory category = getTypeFromSubscription(plan);
return new BusinessSubscriptionEvent(eventType, category);
}
- private static ProductCategory getTypeFromSubscription(final ISubscription subscription)
+ private static ProductCategory getTypeFromSubscription(final IPlan plan)
{
- if (subscription == null) {
- return null;
- }
-
- final IPlan currentPlan = subscription.getCurrentPlan();
- if (currentPlan != null && currentPlan.getProduct() != null) {
- final IProduct product = currentPlan.getProduct();
+ if (plan != null && plan.getProduct() != null) {
+ final IProduct product = plan.getProduct();
if (product.getCatalogName() != null && product.getCategory() != null) {
return product.getCategory();
}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessSubscriptionTransitionMapper.java b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessSubscriptionTransitionMapper.java
index 3b6f353..1788193 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessSubscriptionTransitionMapper.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessSubscriptionTransitionMapper.java
@@ -20,7 +20,6 @@ import com.ning.billing.analytics.BusinessSubscription;
import com.ning.billing.analytics.BusinessSubscriptionEvent;
import com.ning.billing.analytics.BusinessSubscriptionTransition;
import com.ning.billing.catalog.api.ProductCategory;
-import com.ning.billing.entitlement.api.user.ISubscription;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.skife.jdbi.v2.StatementContext;
@@ -31,6 +30,8 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
+import static com.ning.billing.entitlement.api.user.ISubscription.SubscriptionState;
+
public class BusinessSubscriptionTransitionMapper implements ResultSetMapper<BusinessSubscriptionTransition>
{
@Override
@@ -46,7 +47,7 @@ public class BusinessSubscriptionTransitionMapper implements ResultSetMapper<Bus
BigDecimal.valueOf(r.getDouble(10)), // mrr
r.getString(11), // currency
r.getLong(12) == 0 ? null : new DateTime(r.getLong(12), DateTimeZone.UTC), // startDate
- r.getString(13) == null ? null : ISubscription.SubscriptionState.valueOf(r.getString(13)), // state
+ r.getString(13) == null ? null : SubscriptionState.valueOf(r.getString(13)), // state
r.getString(14) == null ? null : UUID.fromString(r.getString(14)), // subscriptionId
r.getString(15) == null ? null : UUID.fromString(r.getString(15)) //bundleId
);
@@ -66,7 +67,7 @@ public class BusinessSubscriptionTransitionMapper implements ResultSetMapper<Bus
BigDecimal.valueOf(r.getDouble(22)), // mrr
r.getString(23), // currency
r.getLong(24) == 0 ? null : new DateTime(r.getLong(24), DateTimeZone.UTC), // startDate
- r.getString(25) == null ? null : ISubscription.SubscriptionState.valueOf(r.getString(25)), // state
+ r.getString(25) == null ? null : SubscriptionState.valueOf(r.getString(25)), // state
r.getString(26) == null ? null : UUID.fromString(r.getString(26)), // subscriptionId
r.getString(27) == null ? null : UUID.fromString(r.getString(27)) //bundleId
);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestEventDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestEventDao.java
index 42f56bd..453f35f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestEventDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestEventDao.java
@@ -24,6 +24,7 @@ import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockPlan;
import com.ning.billing.analytics.MockProduct;
import com.ning.billing.analytics.MockSubscription;
+import com.ning.billing.catalog.api.Currency;
import com.ning.billing.catalog.api.IPlan;
import com.ning.billing.catalog.api.IPlanPhase;
import com.ning.billing.catalog.api.IProduct;
@@ -41,6 +42,7 @@ import org.testng.annotations.Test;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
+import java.util.UUID;
public class TestEventDao
{
@@ -60,12 +62,10 @@ public class TestEventDao
final IProduct product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
final IPlan plan = new MockPlan("platinum-monthly", product);
final IPlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
- final ISubscription prevISubscription = new MockSubscription(ISubscription.SubscriptionState.ACTIVE, plan, phase);
- final ISubscription nextISubscription = new MockSubscription(ISubscription.SubscriptionState.CANCELLED, plan, phase);
- final BusinessSubscription prevSubscription = new BusinessSubscription(prevISubscription);
- final BusinessSubscription nextSubscription = new BusinessSubscription(nextISubscription);
- final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCancelled(prevISubscription);
+ final BusinessSubscription prevSubscription = new BusinessSubscription(plan, phase, Currency.USD, new DateTime(DateTimeZone.UTC), ISubscription.SubscriptionState.ACTIVE, UUID.randomUUID(), UUID.randomUUID());
+ final BusinessSubscription nextSubscription = new BusinessSubscription(plan, phase, Currency.USD, new DateTime(DateTimeZone.UTC), ISubscription.SubscriptionState.CANCELLED, UUID.randomUUID(), UUID.randomUUID());
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCancelled(plan);
final DateTime requestedTimestamp = new DateTime(DateTimeZone.UTC);
transition = new BusinessSubscriptionTransition(KEY, requestedTimestamp, event, prevSubscription, nextSubscription);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
index a6dafc6..7717796 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
@@ -16,7 +16,6 @@
package com.ning.billing.analytics;
-import com.ning.billing.account.api.IAccount;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.IPlan;
import com.ning.billing.catalog.api.IPlanPhase;
@@ -104,13 +103,6 @@ public class MockSubscription implements ISubscription
return phase;
}
-
- @Override
- public IAccount getAccount()
- {
- return null;
- }
-
@Override
public void setPrivate(final String name, final String value)
{
@@ -124,12 +116,14 @@ public class MockSubscription implements ISubscription
}
@Override
- public void uncancel() throws EntitlementUserApiException {
+ public void uncancel() throws EntitlementUserApiException
+ {
throw new UnsupportedOperationException();
}
@Override
- public String getCurrentPriceList() {
+ public String getCurrentPriceList()
+ {
throw new UnsupportedOperationException();
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java
index 7ac53fd..2def231 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java
@@ -29,6 +29,8 @@ import org.testng.annotations.Test;
import java.math.BigDecimal;
+import static com.ning.billing.catalog.api.Currency.USD;
+
public class TestBusinessSubscription
{
private final IDuration MONTHLY = MockDuration.MONHTLY();
@@ -58,7 +60,7 @@ public class TestBusinessSubscription
plan = new MockPlan("platinum-monthly", product);
phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
isubscription = new MockSubscription(ISubscription.SubscriptionState.ACTIVE, plan, phase);
- subscription = new BusinessSubscription(isubscription);
+ subscription = new BusinessSubscription(isubscription, USD);
}
@Test(groups = "fast")
@@ -97,6 +99,6 @@ public class TestBusinessSubscription
Assert.assertTrue(subscription.equals(subscription));
final ISubscription otherIsubscription = new MockSubscription(ISubscription.SubscriptionState.CANCELLED, plan, phase);
- Assert.assertTrue(!subscription.equals(new BusinessSubscription(otherIsubscription)));
+ Assert.assertTrue(!subscription.equals(new BusinessSubscription(otherIsubscription, USD)));
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
index 171dd9c..dfae096 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
@@ -69,39 +69,39 @@ public class TestBusinessSubscriptionEvent
{
BusinessSubscriptionEvent event;
- event = BusinessSubscriptionEvent.subscriptionCreated(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionCreated(isubscription.getCurrentPlan());
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.ADD);
Assert.assertEquals(event.getCategory(), product.getCategory());
Assert.assertEquals(event.toString(), "ADD_BASE");
- event = BusinessSubscriptionEvent.subscriptionCancelled(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionCancelled(isubscription.getCurrentPlan());
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.CANCEL);
Assert.assertEquals(event.getCategory(), product.getCategory());
Assert.assertEquals(event.toString(), "CANCEL_BASE");
- event = BusinessSubscriptionEvent.subscriptionChanged(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionChanged(isubscription.getCurrentPlan());
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.CHANGE);
Assert.assertEquals(event.getCategory(), product.getCategory());
Assert.assertEquals(event.toString(), "CHANGE_BASE");
- event = BusinessSubscriptionEvent.subscriptionPaused(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionPaused(isubscription.getCurrentPlan());
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.PAUSE);
Assert.assertEquals(event.getCategory(), product.getCategory());
Assert.assertEquals(event.toString(), "PAUSE_BASE");
- event = BusinessSubscriptionEvent.subscriptionResumed(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionResumed(isubscription.getCurrentPlan());
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.RESUME);
Assert.assertEquals(event.getCategory(), product.getCategory());
Assert.assertEquals(event.toString(), "RESUME_BASE");
- event = BusinessSubscriptionEvent.subscriptionPhaseChanged(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionPhaseChanged(isubscription.getCurrentPlan(), isubscription.getState());
// The subscription is still active, it's a system change
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.SYSTEM_CHANGE);
Assert.assertEquals(event.getCategory(), product.getCategory());
Assert.assertEquals(event.toString(), "SYSTEM_CHANGE_BASE");
isubscription = new MockSubscription(ISubscription.SubscriptionState.CANCELLED, plan, phase);
- event = BusinessSubscriptionEvent.subscriptionPhaseChanged(isubscription);
+ event = BusinessSubscriptionEvent.subscriptionPhaseChanged(isubscription.getCurrentPlan(), isubscription.getState());
// The subscription is cancelled, it's a system cancellation
Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.SYSTEM_CANCEL);
Assert.assertEquals(event.getCategory(), product.getCategory());
@@ -111,12 +111,12 @@ public class TestBusinessSubscriptionEvent
@Test(groups = "fast")
public void testEquals() throws Exception
{
- final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionChanged(isubscription);
+ final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionChanged(isubscription.getCurrentPlan());
Assert.assertSame(event, event);
Assert.assertEquals(event, event);
Assert.assertTrue(event.equals(event));
- final BusinessSubscriptionEvent otherEvent = BusinessSubscriptionEvent.subscriptionPaused(isubscription);
+ final BusinessSubscriptionEvent otherEvent = BusinessSubscriptionEvent.subscriptionPaused(isubscription.getCurrentPlan());
Assert.assertTrue(!event.equals(otherEvent));
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
index 93758e2..d45a6d4 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
@@ -28,6 +28,10 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import java.util.Currency;
+
+import static com.ning.billing.catalog.api.Currency.*;
+
public class TestBusinessSubscriptionTransition
{
private BusinessSubscription prevSubscription;
@@ -46,9 +50,9 @@ public class TestBusinessSubscriptionTransition
final ISubscription prevISubscription = new MockSubscription(ISubscription.SubscriptionState.ACTIVE, plan, phase);
final ISubscription nextISubscription = new MockSubscription(ISubscription.SubscriptionState.CANCELLED, plan, phase);
- prevSubscription = new BusinessSubscription(prevISubscription);
- nextSubscription = new BusinessSubscription(nextISubscription);
- event = BusinessSubscriptionEvent.subscriptionCancelled(prevISubscription);
+ prevSubscription = new BusinessSubscription(prevISubscription, USD);
+ nextSubscription = new BusinessSubscription(nextISubscription, USD);
+ event = BusinessSubscriptionEvent.subscriptionCancelled(prevISubscription.getCurrentPlan());
requestedTimestamp = new DateTime(DateTimeZone.UTC);
key = "1234";
transition = new BusinessSubscriptionTransition(key, requestedTimestamp, event, prevSubscription, nextSubscription);