killbill-memoizeit

Fix analytics code-- after latest change to entitlements: -

3/21/2012 3:29:06 PM

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 4af7004..3c3bab3 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -39,12 +39,16 @@ public class AnalyticsListener {
     @Subscribe
     public void handleSubscriptionTransitionChange(final SubscriptionTransition event) throws AccountApiException {
         switch (event.getTransitionType()) {
+            // A susbcription enters either through migration or as newly created subscription
             case MIGRATE_ENTITLEMENT:
-                // TODO do nothing for now
-                break;
             case CREATE:
                 bstRecorder.subscriptionCreated(event);
                 break;
+            case RE_CREATE:
+                bstRecorder.subscriptionRecreated(event);
+                break;
+            case MIGRATE_BILLING:
+                break;
             case CANCEL:
                 bstRecorder.subscriptionCancelled(event);
                 break;
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 5b6b078..2d45fd5 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
@@ -33,9 +33,8 @@ public class BusinessSubscriptionEvent
     {
         ADD,
         CANCEL,
+        RE_ADD,
         CHANGE,
-        PAUSE,
-        RESUME,
         SYSTEM_CANCEL,
         SYSTEM_CHANGE
     }
@@ -94,14 +93,9 @@ public class BusinessSubscriptionEvent
         return eventFromType(EventType.CHANGE, plan);
     }
 
-    public static BusinessSubscriptionEvent subscriptionPaused(final Plan plan)
+    public static BusinessSubscriptionEvent subscriptionRecreated(final Plan plan)
     {
-        return eventFromType(EventType.PAUSE, plan);
-    }
-
-    public static BusinessSubscriptionEvent subscriptionResumed(final Plan plan)
-    {
-        return eventFromType(EventType.RESUME, plan);
+        return eventFromType(EventType.RE_ADD, plan);
     }
 
     public static BusinessSubscriptionEvent subscriptionPhaseChanged(final Plan plan, final SubscriptionState state)
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
index 438850f..09fbc96 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionTransitionRecorder.java
@@ -54,6 +54,13 @@ public class BusinessSubscriptionTransitionRecorder
         recordTransition(event, created);
     }
 
+    public void subscriptionRecreated(final SubscriptionTransition recreated) throws AccountApiException
+    {
+        final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionRecreated(recreated.getNextPlan());
+        recordTransition(event, recreated);
+    }
+
+
     public void subscriptionCancelled(final SubscriptionTransition cancelled) throws AccountApiException
     {
         // cancelled.getNextPlan() is null here - need to look at the previous one to create the correct event name
@@ -67,18 +74,6 @@ public class BusinessSubscriptionTransitionRecorder
         recordTransition(event, changed);
     }
 
-    public void subscriptionPaused(final SubscriptionTransition paused) throws AccountApiException
-    {
-        final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionPaused(paused.getNextPlan());
-        recordTransition(event, paused);
-    }
-
-    public void subscriptionResumed(final SubscriptionTransition resumed) throws AccountApiException
-    {
-        final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionResumed(resumed.getNextPlan());
-        recordTransition(event, resumed);
-    }
-
     public void subscriptionPhaseChanged(final SubscriptionTransition phaseChanged) throws AccountApiException
     {
         final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionPhaseChanged(phaseChanged.getNextPlan(), phaseChanged.getNextState());
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java b/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java
index 6d8e587..0b420f0 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java
@@ -80,6 +80,16 @@ public class TestAnalyticsListener
         listener.handleSubscriptionTransitionChange(cancelledSubscriptionTransition);
         Assert.assertEquals(dao.getTransitions(KEY).size(), 2);
         Assert.assertEquals(dao.getTransitions(KEY).get(1), cancelledBST);
+
+       // Recreate it
+        final DateTime effectiveRecreatedTransitionTime = new DateTime(DateTimeZone.UTC);
+        final DateTime requestedRecreatedTransitionTime = new DateTime(DateTimeZone.UTC);
+        final SubscriptionTransitionData recreatedSubscriptionTransition = createRecreatedSubscriptionTransition(requestedRecreatedTransitionTime, effectiveRecreatedTransitionTime, cancelledSubscriptionTransition.getNextState());
+        final BusinessSubscriptionTransition recreatedBST = createExpectedRecreatedBST(recreatedSubscriptionTransition.getId(), requestedRecreatedTransitionTime, effectiveRecreatedTransitionTime, cancelledBST.getNextSubscription());
+        listener.handleSubscriptionTransitionChange(recreatedSubscriptionTransition);
+        Assert.assertEquals(dao.getTransitions(KEY).size(), 3);
+        Assert.assertEquals(dao.getTransitions(KEY).get(2), recreatedBST);
+
     }
 
     private BusinessSubscriptionTransition createExpectedFirstBST(final UUID id, final DateTime requestedTransitionTime, final DateTime effectiveTransitionTime)
@@ -95,6 +105,14 @@ public class TestAnalyticsListener
         return createExpectedBST(id, event, requestedTransitionTime, effectiveTransitionTime, lastSubscription, null);
     }
 
+    private BusinessSubscriptionTransition createExpectedRecreatedBST(final UUID id, final DateTime requestedTransitionTime, final DateTime effectiveTransitionTime, final BusinessSubscription lastSubscription)
+    {
+        final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionRecreated(plan);
+        final Subscription.SubscriptionState subscriptionState = Subscription.SubscriptionState.ACTIVE;
+        return createExpectedBST(id, event, requestedTransitionTime, effectiveTransitionTime, lastSubscription, subscriptionState);
+    }
+
+
     private BusinessSubscriptionTransition createExpectedBST(
         final UUID eventId,
         final BusinessSubscriptionEvent eventType,
@@ -175,6 +193,32 @@ public class TestAnalyticsListener
         );
     }
 
+    private SubscriptionTransitionData createRecreatedSubscriptionTransition(final DateTime requestedTransitionTime, final DateTime effectiveTransitionTime, final Subscription.SubscriptionState previousState)
+    {
+        final ApiEventType eventType = ApiEventType.RE_CREATE;
+        final Subscription.SubscriptionState nextState = Subscription.SubscriptionState.ACTIVE;
+        return new SubscriptionTransitionData(
+            UUID.randomUUID(),
+            subscriptionId,
+            bundleUUID,
+            EntitlementEvent.EventType.API_USER,
+            eventType,
+            requestedTransitionTime,
+            effectiveTransitionTime,
+            previousState,
+            null,
+            null,
+            null,
+            nextState,
+            plan,
+            phase,
+            priceList,
+            1L,
+            true
+        );
+    }
+
+
     private SubscriptionTransitionData createSubscriptionTransition(
         final ApiEventType eventType,
         final DateTime requestedTransitionTime,
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 a3ca56c..793feac 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
@@ -31,7 +31,7 @@ public class TestBusinessSubscriptionEvent
     private Product product;
     private Plan plan;
     private PlanPhase phase;
-    private Subscription isubscription;
+    private Subscription subscription;
 
     @BeforeMethod(alwaysRun = true)
     public void setUp() throws Exception
@@ -39,7 +39,7 @@ public class TestBusinessSubscriptionEvent
         product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
         plan = new MockPlan("platinum-monthly", product);
         phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
-        isubscription = new MockSubscription(Subscription.SubscriptionState.ACTIVE, plan, phase);
+        subscription = new MockSubscription(Subscription.SubscriptionState.ACTIVE, plan, phase);
     }
 
     @Test(groups = "fast")
@@ -55,53 +55,39 @@ public class TestBusinessSubscriptionEvent
         Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.CANCEL);
         Assert.assertEquals(event.getCategory(), ProductCategory.BASE);
 
-        event = BusinessSubscriptionEvent.valueOf("PAUSE_MISC");
-        Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.PAUSE);
-        Assert.assertNull(event.getCategory());
-
         event = BusinessSubscriptionEvent.valueOf("SYSTEM_CANCEL_ADD_ON");
         Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.SYSTEM_CANCEL);
         Assert.assertEquals(event.getCategory(), ProductCategory.ADD_ON);
     }
 
     @Test(groups = "fast")
-    public void testFromISubscription() throws Exception
+    public void testFromSubscription() throws Exception
     {
         BusinessSubscriptionEvent event;
 
-        event = BusinessSubscriptionEvent.subscriptionCreated(isubscription.getCurrentPlan());
+        event = BusinessSubscriptionEvent.subscriptionCreated(subscription.getCurrentPlan());
         Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.ADD);
         Assert.assertEquals(event.getCategory(), product.getCategory());
         Assert.assertEquals(event.toString(), "ADD_BASE");
 
-        event = BusinessSubscriptionEvent.subscriptionCancelled(isubscription.getCurrentPlan());
+        event = BusinessSubscriptionEvent.subscriptionCancelled(subscription.getCurrentPlan());
         Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.CANCEL);
         Assert.assertEquals(event.getCategory(), product.getCategory());
         Assert.assertEquals(event.toString(), "CANCEL_BASE");
 
-        event = BusinessSubscriptionEvent.subscriptionChanged(isubscription.getCurrentPlan());
+        event = BusinessSubscriptionEvent.subscriptionChanged(subscription.getCurrentPlan());
         Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.CHANGE);
         Assert.assertEquals(event.getCategory(), product.getCategory());
         Assert.assertEquals(event.toString(), "CHANGE_BASE");
 
-        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.getCurrentPlan());
-        Assert.assertEquals(event.getEventType(), BusinessSubscriptionEvent.EventType.RESUME);
-        Assert.assertEquals(event.getCategory(), product.getCategory());
-        Assert.assertEquals(event.toString(), "RESUME_BASE");
-
-        event = BusinessSubscriptionEvent.subscriptionPhaseChanged(isubscription.getCurrentPlan(), isubscription.getState());
+        event = BusinessSubscriptionEvent.subscriptionPhaseChanged(subscription.getCurrentPlan(), subscription.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(Subscription.SubscriptionState.CANCELLED, plan, phase);
-        event = BusinessSubscriptionEvent.subscriptionPhaseChanged(isubscription.getCurrentPlan(), isubscription.getState());
+        subscription = new MockSubscription(Subscription.SubscriptionState.CANCELLED, plan, phase);
+        event = BusinessSubscriptionEvent.subscriptionPhaseChanged(subscription.getCurrentPlan(), subscription.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 +97,9 @@ public class TestBusinessSubscriptionEvent
     @Test(groups = "fast")
     public void testEquals() throws Exception
     {
-        final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionChanged(isubscription.getCurrentPlan());
+        final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionChanged(subscription.getCurrentPlan());
         Assert.assertSame(event, event);
         Assert.assertEquals(event, event);
         Assert.assertTrue(event.equals(event));
-
-        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 3b33bef..eaa4c96 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
@@ -86,9 +86,6 @@ public class TestBusinessSubscriptionTransition
         otherTransition = new BusinessSubscriptionTransition(id, "12345", accountKey, requestedTimestamp, event, prevSubscription, nextSubscription);
         Assert.assertTrue(!transition.equals(otherTransition));
 
-        otherTransition = new BusinessSubscriptionTransition(id, key, accountKey, requestedTimestamp, BusinessSubscriptionEvent.subscriptionPaused(null), prevSubscription, nextSubscription);
-        Assert.assertTrue(!transition.equals(otherTransition));
-
         otherTransition = new BusinessSubscriptionTransition(id, key, accountKey, requestedTimestamp, event, prevSubscription, prevSubscription);
         Assert.assertTrue(!transition.equals(otherTransition));