diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
index cb234a7..db4f78f 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
@@ -247,9 +247,9 @@ public class SubscriptionData extends EntityBase implements Subscription {
public String getLastActiveProductName() {
if (getState() == SubscriptionState.CANCELLED) {
final SubscriptionTransitionData data = getPreviousTransitionData();
- return data.getPreviousPlan().getName();
+ return data.getPreviousPlan().getProduct().getName();
} else {
- return getCurrentPlan().getName();
+ return getCurrentPlan().getProduct().getName();
}
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
index af1b2f4..9eee156 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
@@ -57,11 +57,23 @@ public abstract class TestUserApiCancel extends TestApiBase {
final DateTime future = clock.getUTCNow();
testListener.pushExpectedEvent(NextEvent.CANCEL);
+ assertEquals(subscription.getLastActiveProductName(), prod);
+ assertEquals(subscription.getLastActivePriceListName(), planSet);
+ assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+ assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
+
// CANCEL in trial period to get IMM policy
subscription.cancel(clock.getUTCNow(), false, context);
currentPhase = subscription.getCurrentPhase();
testListener.isCompleted(3000);
+ assertEquals(subscription.getLastActiveProductName(), prod);
+ assertEquals(subscription.getLastActivePriceListName(), planSet);
+ assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+ assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
+
assertNull(currentPhase);
checkNextPhaseChange(subscription, 0, null);
@@ -101,6 +113,11 @@ public abstract class TestUserApiCancel extends TestApiBase {
billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate, context);
subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
+ assertEquals(subscription.getLastActiveProductName(), prod);
+ assertEquals(subscription.getLastActivePriceListName(), planSet);
+ assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+ assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
// CANCEL
testListener.setNonExpectedMode();
testListener.pushExpectedEvent(NextEvent.CANCEL);
@@ -108,6 +125,12 @@ public abstract class TestUserApiCancel extends TestApiBase {
assertFalse(testListener.isCompleted(3000));
testListener.reset();
+
+ assertEquals(subscription.getLastActiveProductName(), prod);
+ assertEquals(subscription.getLastActivePriceListName(), planSet);
+ assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+ assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
DateTime futureEndDate = subscription.getFutureEndDate();
Assert.assertNotNull(futureEndDate);
@@ -124,6 +147,12 @@ public abstract class TestUserApiCancel extends TestApiBase {
assertNull(currentPhase);
checkNextPhaseChange(subscription, 0, null);
+ assertEquals(subscription.getLastActiveProductName(), prod);
+ assertEquals(subscription.getLastActivePriceListName(), planSet);
+ assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+ assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
+
assertListenerStatus();
} catch (EntitlementUserApiException e) {
Assert.fail(e.getMessage());