killbill-uncached

Minor fixes for addon tests

2/29/2012 5:15:53 PM

Details

diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
index b585844..d265697 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
@@ -134,6 +134,13 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
                 checkAddonCreationRights(baseSubscription, plan);
                 bundleStartDate = baseSubscription.getStartDate();
                 break;
+            case STANDALONE:
+                if (baseSubscription != null) {
+                    throw new EntitlementUserApiException(ErrorCode.ENT_CREATE_BP_EXISTS, bundleId);
+                }
+                // Not really but we don't care, there is no alignment for STANDALONE subscriptions
+                bundleStartDate = requestedDate;
+                break;
             default:
                 throw new EntitlementError(String.format("Can't create subscription of type %s",
                         plan.getProduct().getCategory().toString()));
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java
index 2646d3e..427353a 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java
@@ -234,6 +234,7 @@ public class Engine implements EventListener, EntitlementService {
                 continue;
             }
             Plan addonCurrentPlan = cur.getCurrentPlan();
+            // If base Plan has been canceled, that will cancel all the OA
             if (addonUtils.isAddonIncluded(baseSubscription, addonCurrentPlan) ||
                     ! addonUtils.isAddonAvailable(baseSubscription, addonCurrentPlan)) {
                 //
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
index dff8fad..9507061 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
@@ -243,7 +243,7 @@ public class EntitlementSqlDao implements EntitlementDao {
             @Override
             public Void inTransaction(EventSqlDao dao,
                     TransactionStatus status) throws Exception {
-                // STEPH what about future cancel events : seems like this is missing?
+                cancelNextCancelEventFromTransaction(subscriptionId, dao);
                 cancelNextChangeEventFromTransaction(subscriptionId, dao);
                 cancelNextPhaseEventFromTransaction(subscriptionId, dao);
                 dao.insertEvent(cancelEvent);
@@ -333,6 +333,10 @@ public class EntitlementSqlDao implements EntitlementDao {
         cancelFutureEventFromTransaction(subscriptionId, dao, EventType.API_USER, ApiEventType.CHANGE);
     }
 
+    private void cancelNextCancelEventFromTransaction(final UUID subscriptionId, final EventSqlDao dao) {
+        cancelFutureEventFromTransaction(subscriptionId, dao, EventType.API_USER, ApiEventType.CANCEL);
+    }
+
     private void cancelFutureEventFromTransaction(final UUID subscriptionId, final EventSqlDao dao, EventType type, ApiEventType apiType) {
 
         UUID futureEventId = null;
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiAddOn.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiAddOn.java
index 2e8bffd..71f2bb9 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiAddOn.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiAddOn.java
@@ -96,6 +96,7 @@ public class TestUserApiAddOn extends TestApiBase {
             // MOVE AFTER CANCELLATION
             testListener.reset();
             testListener.pushExpectedEvent(NextEvent.CANCEL);
+            testListener.pushExpectedEvent(NextEvent.CANCEL);
             clock.addDeltaFromReality(ctd);
             now = clock.getUTCNow();
             assertTrue(testListener.isCompleted(5000));
@@ -150,6 +151,7 @@ public class TestUserApiAddOn extends TestApiBase {
 
             testListener.reset();
             testListener.pushExpectedEvent(NextEvent.CHANGE);
+            testListener.pushExpectedEvent(NextEvent.CANCEL);
             baseSubscription.changePlan(newBaseProduct, newBaseTerm, newBasePriceList, now);
             assertTrue(testListener.isCompleted(5000));
 
@@ -210,6 +212,7 @@ public class TestUserApiAddOn extends TestApiBase {
             // MOVE AFTER CHANGE
             testListener.reset();
             testListener.pushExpectedEvent(NextEvent.CHANGE);
+            testListener.pushExpectedEvent(NextEvent.CANCEL);
             clock.addDeltaFromReality(ctd);
             now = clock.getUTCNow();
             assertTrue(testListener.isCompleted(5000));