killbill-uncached

subscription: Move pending cancellation in their correct

4/15/2017 12:54:00 AM

Details

diff --git a/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiCancel.java b/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiCancel.java
index be86546..72dd488 100644
--- a/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiCancel.java
+++ b/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiCancel.java
@@ -21,6 +21,7 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 import org.joda.time.Interval;
 import org.joda.time.LocalDate;
+import org.killbill.billing.ErrorCode;
 import org.killbill.billing.api.TestApiListener.NextEvent;
 import org.killbill.billing.catalog.api.BillingActionPolicy;
 import org.killbill.billing.catalog.api.BillingPeriod;
@@ -30,6 +31,7 @@ import org.killbill.billing.catalog.api.Plan;
 import org.killbill.billing.catalog.api.PlanPhase;
 import org.killbill.billing.catalog.api.PriceListSet;
 import org.killbill.billing.catalog.api.ProductCategory;
+import org.killbill.billing.entitlement.api.Entitlement;
 import org.killbill.billing.entitlement.api.Entitlement.EntitlementState;
 import org.killbill.billing.entity.EntityPersistenceException;
 import org.killbill.billing.subscription.SubscriptionTestSuiteWithEmbeddedDB;
@@ -46,6 +48,7 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 
 public class TestUserApiCancel extends SubscriptionTestSuiteWithEmbeddedDB {
 
@@ -426,9 +429,98 @@ public class TestUserApiCancel extends SubscriptionTestSuiteWithEmbeddedDB {
         clock.addMonths(1);
         assertListenerStatus();
 
+    }
+
+
+    @Test(groups = "slow")
+    public void testCancelPlanOnPendingSubscription1() throws SubscriptionBaseApiException {
+
+        final String baseProduct = "Shotgun";
+        final BillingPeriod baseTerm = BillingPeriod.MONTHLY;
+        final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
 
+        final DateTime startDate = clock.getUTCNow().plusDays(5);
+
+        final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList, startDate);
+        assertEquals(subscription.getState(), Entitlement.EntitlementState.PENDING);
+        assertEquals(subscription.getStartDate().compareTo(startDate), 0);
+
+        // The code will be smart to infer the cancelation date as being the future startDate
+        subscription.cancel(callContext);
+
+        testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CANCEL);
+        clock.addDays(5);
+        assertListenerStatus();
 
+        final DefaultSubscriptionBase subscription2 = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext);
+        assertEquals(subscription2.getStartDate().compareTo(startDate), 0);
+        assertEquals(subscription2.getState(), Entitlement.EntitlementState.CANCELLED);
+        assertNull(subscription2.getCurrentPlan());
     }
 
+    @Test(groups = "slow")
+    public void testCancelPlanOnPendingSubscription2() throws SubscriptionBaseApiException {
+
+        final String baseProduct = "Shotgun";
+        final BillingPeriod baseTerm = BillingPeriod.MONTHLY;
+        final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
+
+        final DateTime startDate = clock.getUTCNow().plusDays(5);
+
+        final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList, startDate);
+        assertEquals(subscription.getState(), Entitlement.EntitlementState.PENDING);
+        assertEquals(subscription.getStartDate().compareTo(startDate), 0);
+
+        try {
+            subscription.cancelWithDate(null, callContext);
+            fail("Cancel plan should have failed : subscription PENDING");
+        } catch (SubscriptionBaseApiException e) {
+            assertEquals(e.getCode(), ErrorCode.SUB_INVALID_REQUESTED_DATE.getCode());
+        }
+
+        try {
+            subscription.cancelWithDate(startDate.minusDays(1), callContext);
+            fail("Cancel plan should have failed : subscription PENDING");
+        } catch (SubscriptionBaseApiException e) {
+            assertEquals(e.getCode(), ErrorCode.SUB_INVALID_REQUESTED_DATE.getCode());
+        }
+
+        subscription.cancelWithDate(startDate, callContext);
+
+        testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CANCEL);
+        clock.addDays(5);
+        assertListenerStatus();
+
+        final DefaultSubscriptionBase subscription2 = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext);
+        assertEquals(subscription2.getStartDate().compareTo(startDate), 0);
+        assertEquals(subscription2.getState(), Entitlement.EntitlementState.CANCELLED);
+        assertNull(subscription2.getCurrentPlan());
+    }
+
+
+    @Test(groups = "slow")
+    public void testCancelPlanOnPendingSubscription3() throws SubscriptionBaseApiException {
+
+        final String baseProduct = "Shotgun";
+        final BillingPeriod baseTerm = BillingPeriod.MONTHLY;
+        final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
+
+        final DateTime startDate = clock.getUTCNow().plusDays(5);
+
+        final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList, startDate);
+        assertEquals(subscription.getState(), Entitlement.EntitlementState.PENDING);
+        assertEquals(subscription.getStartDate().compareTo(startDate), 0);
+
+        subscription.cancelWithPolicy(BillingActionPolicy.IMMEDIATE, null, 1, callContext);
+
+        testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CANCEL);
+        clock.addDays(5);
+        assertListenerStatus();
+
+        final DefaultSubscriptionBase subscription2 = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext);
+        assertEquals(subscription2.getStartDate().compareTo(startDate), 0);
+        assertEquals(subscription2.getState(), Entitlement.EntitlementState.CANCELLED);
+        assertNull(subscription2.getCurrentPlan());
+    }
 
 }
diff --git a/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiChangePlan.java b/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiChangePlan.java
index 1754d0d..eb5a01d 100644
--- a/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiChangePlan.java
+++ b/subscription/src/test/java/org/killbill/billing/subscription/api/user/TestUserApiChangePlan.java
@@ -508,95 +508,4 @@ public class TestUserApiChangePlan extends SubscriptionTestSuiteWithEmbeddedDB {
         assertEquals(subscription2.getCurrentPlan().getProduct().getName(), "Pistol");
     }
 
-    @Test(groups = "slow")
-    public void testCancelPlanOnPendingSubscription1() throws SubscriptionBaseApiException {
-
-        final String baseProduct = "Shotgun";
-        final BillingPeriod baseTerm = BillingPeriod.MONTHLY;
-        final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
-
-        final DateTime startDate = clock.getUTCNow().plusDays(5);
-
-        final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList, startDate);
-        assertEquals(subscription.getState(), Entitlement.EntitlementState.PENDING);
-        assertEquals(subscription.getStartDate().compareTo(startDate), 0);
-
-        // The code will be smart to infer the cancelation date as being the future startDate
-        subscription.cancel(callContext);
-
-        testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CANCEL);
-        clock.addDays(5);
-        assertListenerStatus();
-
-        final DefaultSubscriptionBase subscription2 = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext);
-        assertEquals(subscription2.getStartDate().compareTo(startDate), 0);
-        assertEquals(subscription2.getState(), Entitlement.EntitlementState.CANCELLED);
-        assertNull(subscription2.getCurrentPlan());
-    }
-
-    @Test(groups = "slow")
-    public void testCancelPlanOnPendingSubscription2() throws SubscriptionBaseApiException {
-
-        final String baseProduct = "Shotgun";
-        final BillingPeriod baseTerm = BillingPeriod.MONTHLY;
-        final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
-
-        final DateTime startDate = clock.getUTCNow().plusDays(5);
-
-        final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList, startDate);
-        assertEquals(subscription.getState(), Entitlement.EntitlementState.PENDING);
-        assertEquals(subscription.getStartDate().compareTo(startDate), 0);
-
-        try {
-            subscription.cancelWithDate(null, callContext);
-            fail("Cancel plan should have failed : subscription PENDING");
-        } catch (SubscriptionBaseApiException e) {
-            assertEquals(e.getCode(), ErrorCode.SUB_INVALID_REQUESTED_DATE.getCode());
-        }
-
-        try {
-            subscription.cancelWithDate(startDate.minusDays(1), callContext);
-            fail("Cancel plan should have failed : subscription PENDING");
-        } catch (SubscriptionBaseApiException e) {
-            assertEquals(e.getCode(), ErrorCode.SUB_INVALID_REQUESTED_DATE.getCode());
-        }
-
-        subscription.cancelWithDate(startDate, callContext);
-
-        testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CANCEL);
-        clock.addDays(5);
-        assertListenerStatus();
-
-        final DefaultSubscriptionBase subscription2 = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext);
-        assertEquals(subscription2.getStartDate().compareTo(startDate), 0);
-        assertEquals(subscription2.getState(), Entitlement.EntitlementState.CANCELLED);
-        assertNull(subscription2.getCurrentPlan());
-    }
-
-
-    @Test(groups = "slow")
-    public void testCancelPlanOnPendingSubscription3() throws SubscriptionBaseApiException {
-
-        final String baseProduct = "Shotgun";
-        final BillingPeriod baseTerm = BillingPeriod.MONTHLY;
-        final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
-
-        final DateTime startDate = clock.getUTCNow().plusDays(5);
-
-        final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList, startDate);
-        assertEquals(subscription.getState(), Entitlement.EntitlementState.PENDING);
-        assertEquals(subscription.getStartDate().compareTo(startDate), 0);
-
-        subscription.cancelWithPolicy(BillingActionPolicy.IMMEDIATE, null, 1, callContext);
-
-        testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CANCEL);
-        clock.addDays(5);
-        assertListenerStatus();
-
-        final DefaultSubscriptionBase subscription2 = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext);
-        assertEquals(subscription2.getStartDate().compareTo(startDate), 0);
-        assertEquals(subscription2.getState(), Entitlement.EntitlementState.CANCELLED);
-        assertNull(subscription2.getCurrentPlan());
-    }
-
 }