private DefaultSubscriptionBase createSubscriptionStartedInThePast(final String productName, final PhaseType phaseType) { final SubscriptionBuilder builder = new SubscriptionBuilder(); builder.setBundleStartDate(clock.getUTCNow().minusHours(10)); // Make sure to set the dates apart builder.setAlignStartDate(new DateTime(builder.getBundleStartDate().plusHours(5))); // Create the transitions final DefaultSubscriptionBase defaultSubscriptionBase = new DefaultSubscriptionBase(builder, null, clock); final SubscriptionBaseEvent event = createSubscriptionEvent(builder.getAlignStartDate(), productName, phaseType, ApiEventType.CREATE, defaultSubscriptionBase.getActiveVersion()); defaultSubscriptionBase.rebuildTransitions(ImmutableList.<SubscriptionBaseEvent>of(event), catalogService.getFullCatalog()); Assert.assertEquals(defaultSubscriptionBase.getAllTransitions().size(), 1); Assert.assertNull(defaultSubscriptionBase.getAllTransitions().get(0).getPreviousPhase()); Assert.assertNotNull(defaultSubscriptionBase.getAllTransitions().get(0).getNextPhase()); return defaultSubscriptionBase; }
PlanPhase trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL); final DateTime expectedPhaseTrialChange = TestSubscriptionHelper.addDuration(subscription.getStartDate(), trialPhase.getDuration()); testUtil.checkNextPhaseChange(subscription, 1, expectedPhaseTrialChange); trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.EVERGREEN); subscriptionInternalApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate, internalCallContext); subscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext); assertEquals(subscription.getLastActiveProduct().getName(), prod); assertEquals(subscription.getLastActivePriceList().getName(), planSet); assertEquals(subscription.getLastActiveBillingPeriod(), term); assertEquals(subscription.getLastActiveCategory(), ProductCategory.BASE); subscription.cancel(callContext); assertFalse(testListener.isCompleted(3000)); testListener.reset(); assertEquals(subscription.getLastActiveProduct().getName(), prod); assertEquals(subscription.getLastActivePriceList().getName(), planSet); assertEquals(subscription.getLastActiveBillingPeriod(), term); assertEquals(subscription.getLastActiveCategory(), ProductCategory.BASE); final DateTime futureEndDate = subscription.getFutureEndDate(); Assert.assertNotNull(futureEndDate);
testUtil.getProductSpecifier(productName, planSetName, term, null), requestedDate, internalCallContext); assertNotNull(subscription); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(subscription.getBundleId(), bundle.getId()); assertEquals(subscription.getStartDate(), requestedDate); assertEquals(productName, subscription.getCurrentPlan().getProduct().getName()); testUtil.getProductSpecifier(productName, planSetName, term, null), requestedDate, internalCallContext); } else { subscription.recreate(testUtil.getProductSpecifier(productName, planSetName, term, null), requestedDate, callContext); subscription.cancelWithDate(null, callContext); testUtil.getProductSpecifier(productName, planSetName, term, null), requestedDate, internalCallContext); } else { subscription.recreate(testUtil.getProductSpecifier(productName, planSetName, term, null), clock.getUTCNow(), callContext); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(subscription.getBundleId(), bundle.getId()); assertEquals(subscription.getStartDate(), requestedDate); assertEquals(productName, subscription.getCurrentPlan().getProduct().getName());
private SubscriptionBase buildSubscription(final DefaultSubscriptionBase in, final InternalTenantContext context) { final DefaultSubscriptionBase subscription = new DefaultSubscriptionBase(new SubscriptionBuilder(in), null, clock); if (events.size() > 0) { subscription.rebuildTransitions(getEventsForSubscription(in.getId(), context), catalogService.getFullCatalog()); } return subscription; }
private void changeSubscription(final DateTime effectiveChangeDate, final DefaultSubscriptionBase defaultSubscriptionBase, final String previousProductName, final String newProductName, final PhaseType commonPhaseType) { final SubscriptionBaseEvent previousEvent = createSubscriptionEvent(defaultSubscriptionBase.getStartDate(), previousProductName, commonPhaseType, ApiEventType.CREATE, defaultSubscriptionBase.getActiveVersion()); final SubscriptionBaseEvent event = createSubscriptionEvent(effectiveChangeDate, newProductName, commonPhaseType, ApiEventType.CHANGE, defaultSubscriptionBase.getActiveVersion()); defaultSubscriptionBase.rebuildTransitions(ImmutableList.<SubscriptionBaseEvent>of(previousEvent, event), catalogService.getFullCatalog()); final List<SubscriptionBaseTransition> newTransitions = defaultSubscriptionBase.getAllTransitions(); Assert.assertEquals(newTransitions.size(), 2); Assert.assertNull(newTransitions.get(0).getPreviousPhase()); Assert.assertEquals(newTransitions.get(0).getNextPhase(), newTransitions.get(1).getPreviousPhase()); Assert.assertNotNull(newTransitions.get(1).getNextPhase()); }
final SubscriptionBaseTimeline bpRepair = testUtil.getSubscriptionRepair(baseSubscription.getId(), bundleRepair); assertEquals(bpRepair.getExistingEvents().size(), 2); SubscriptionBaseTimeline aoRepair = testUtil.getSubscriptionRepair(aoSubscription.getId(), bundleRepair); assertEquals(aoRepair.getExistingEvents().size(), 2); final DateTime aoChangeDate = aoSubscription.getStartDate().plusDays(1); final PlanPhaseSpecifier spec = new PlanPhaseSpecifier("Laser-Scope", ProductCategory.ADD_ON, BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, PhaseType.TRIAL); final NewEvent ne = testUtil.createNewEvent(SubscriptionBaseTransitionType.CHANGE, aoChangeDate, spec); final SubscriptionBaseTimeline saoRepair = testUtil.createSubscriptionRepair(aoSubscription.getId(), des, Collections.singletonList(ne)); aoRepair = testUtil.getSubscriptionRepair(aoSubscription.getId(), dryRunBundleRepair); assertEquals(aoRepair.getExistingEvents().size(), 3); ProductCategory.ADD_ON, PriceListSet.DEFAULT_PRICELIST_NAME, BillingPeriod.MONTHLY, aoSubscription.getStartDate())); expected.add(testUtil.createExistingEventForAssertion(SubscriptionBaseTransitionType.CHANGE, "Laser-Scope", PhaseType.DISCOUNT, ProductCategory.ADD_ON, PriceListSet.DEFAULT_PRICELIST_NAME, BillingPeriod.MONTHLY, aoChangeDate)); expected.add(testUtil.createExistingEventForAssertion(SubscriptionBaseTransitionType.PHASE, "Laser-Scope", PhaseType.EVERGREEN, ProductCategory.ADD_ON, PriceListSet.DEFAULT_PRICELIST_NAME, BillingPeriod.MONTHLY, aoSubscription.getStartDate().plusMonths(1) /* SubscriptionBase alignment */)); DefaultSubscriptionBase newAoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(newAoSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newAoSubscription.getAllTransitions().size(), 2); aoRepair = testUtil.getSubscriptionRepair(aoSubscription.getId(), realRunBundleRepair); assertEquals(aoRepair.getExistingEvents().size(), 3); index = 0;
final DefaultSubscriptionBase subscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscriptionId, internalCallContext); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(subscription.getBundleId(), bundle.getId()); assertEquals(subscription.getStartDate(), startDate); assertEquals(subscription.getBundleStartDate(), startDate); final Plan currentPlan = subscription.getCurrentPlan(); assertNotNull(currentPlan); assertEquals(currentPlan.getProduct().getName(), newBaseProduct); assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.MONTHLY); final PlanPhase currentPhase = subscription.getCurrentPhase(); assertNotNull(currentPhase); assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN);
@Test(groups = "slow") public void testCorrectPhaseAlignmentOnChange() throws SubscriptionBaseApiException { DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, "Shotgun", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME); PlanPhase trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL); subscription.changePlan("Assault-Rifle", BillingPeriod.ANNUAL, "gunclubDiscount", callContext); assertListenerStatus(); testListener.reset(); final Plan currentPlan = subscription.getCurrentPlan(); assertNotNull(currentPlan); assertEquals(currentPlan.getProduct().getName(), "Assault-Rifle"); assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.ANNUAL); trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL); trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.DISCOUNT); subscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext); final DateTime expectedNextPhaseDate = subscription.getStartDate().plusDays(30).plusMonths(6); final SubscriptionBaseTransition nextPhase = subscription.getPendingTransition();
SubscriptionBaseTimeline bpRepair = testUtil.getSubscriptionRepair(baseSubscription.getId(), bundleRepair); assertEquals(bpRepair.getExistingEvents().size(), 2); SubscriptionBaseTimeline aoRepair = testUtil.getSubscriptionRepair(aoSubscription.getId(), bundleRepair); assertEquals(aoRepair.getExistingEvents().size(), 2); final DateTime aoCancelDate = aoSubscription.getStartDate().plusDays(1); final SubscriptionBaseTimeline saoRepair = testUtil.createSubscriptionRepair(aoSubscription.getId(), des, Collections.singletonList(ne)); aoRepair = testUtil.getSubscriptionRepair(aoSubscription.getId(), dryRunBundleRepair); assertEquals(aoRepair.getExistingEvents().size(), 2); bpRepair = testUtil.getSubscriptionRepair(baseSubscription.getId(), bundleRepair); assertEquals(bpRepair.getExistingEvents().size(), 2); ProductCategory.ADD_ON, PriceListSet.DEFAULT_PRICELIST_NAME, BillingPeriod.MONTHLY, aoSubscription.getStartDate())); expected.add(testUtil.createExistingEventForAssertion(SubscriptionBaseTransitionType.CANCEL, "Telescopic-Scope", PhaseType.DISCOUNT, ProductCategory.ADD_ON, PriceListSet.DEFAULT_PRICELIST_NAME, BillingPeriod.MONTHLY, aoCancelDate)); DefaultSubscriptionBase newAoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(newAoSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); DefaultSubscriptionBase newBaseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); assertEquals(newBaseSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newBaseSubscription.getAllTransitions().size(), 2); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION);
assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); final Duration aoCtd = testUtil.getDurationMonth(1); final DateTime newAOChargedThroughDate = TestSubscriptionHelper.addDuration(now, aoCtd); subscriptionInternalApi.setChargedThroughDate(aoSubscription.getId(), newAOChargedThroughDate, internalCallContext); subscriptionInternalApi.setChargedThroughDate(baseSubscription.getId(), newBPChargedThroughDate, internalCallContext); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); aoSubscription.cancel(callContext); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); assertTrue(aoSubscription.isSubscriptionFutureCancelled()); baseSubscription.cancel(callContext); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); assertEquals(baseSubscription.getState(), EntitlementState.ACTIVE); assertTrue(baseSubscription.isSubscriptionFutureCancelled()); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); List<SubscriptionBaseTransition> aoTransitions = aoSubscription.getAllTransitions(); assertEquals(aoTransitions.size(), 3); assertEquals(aoTransitions.get(0).getTransitionType(), SubscriptionBaseTransitionType.CREATE); assertEquals(aoTransitions.get(1).getTransitionType(), SubscriptionBaseTransitionType.PHASE); assertEquals(aoTransitions.get(2).getTransitionType(), SubscriptionBaseTransitionType.CANCEL); assertTrue(aoSubscription.getFutureEndDate().compareTo(newAOChargedThroughDate) == 0);
final Duration ctd = testUtil.getDurationMonth(1); final DateTime newChargedThroughDate = TestSubscriptionHelper.addDuration(now, ctd); subscriptionInternalApi.setChargedThroughDate(baseSubscription.getId(), newChargedThroughDate, internalCallContext); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); final String newBasePriceList = PriceListSet.DEFAULT_PRICELIST_NAME; final List<EntitlementAOStatusDryRun> aoStatus = subscriptionInternalApi.getDryRunChangePlanStatus(baseSubscription.getId(), newBaseProduct, now, internalCallContext); assertEquals(aoStatus.size(), 1); assertEquals(aoStatus.get(0).getId(), aoSubscription.getId()); assertEquals(aoStatus.get(0).getProductName(), aoProduct); assertEquals(aoStatus.get(0).getBillingPeriod(), aoTerm); assertEquals(aoStatus.get(0).getPhaseType(), aoSubscription.getCurrentPhase().getPhaseType()); assertEquals(aoStatus.get(0).getPriceList(), aoSubscription.getCurrentPriceList().getName()); assertEquals(aoStatus.get(0).getReason(), DryRunChangeReason.AO_NOT_AVAILABLE_IN_NEW_PLAN); baseSubscription.changePlan(newBaseProduct, newBaseTerm, newBasePriceList, callContext); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); assertTrue(aoSubscription.isSubscriptionFutureCancelled()); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.CANCELLED);
PlanPhase currentPhase = subscription.getCurrentPhase(); assertEquals(currentPhase.getPhaseType(), PhaseType.TRIAL); testListener.pushExpectedEvent(NextEvent.CANCEL); assertEquals(subscription.getLastActiveProduct().getName(), prod); assertEquals(subscription.getLastActivePriceList().getName(), planSet); assertEquals(subscription.getLastActiveBillingPeriod(), term); assertEquals(subscription.getLastActiveCategory(), ProductCategory.BASE); subscription.cancel(callContext); currentPhase = subscription.getCurrentPhase(); testListener.isCompleted(3000); assertEquals(subscription.getLastActiveProduct().getName(), prod); assertEquals(subscription.getLastActivePriceList().getName(), planSet); assertEquals(subscription.getLastActiveBillingPeriod(), term); assertEquals(subscription.getLastActiveCategory(), ProductCategory.BASE);
final PlanPhase trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL); final DateTime expectedPhaseTrialChange = TestSubscriptionHelper.addDuration(subscription.getStartDate(), trialPhase.getDuration()); testUtil.checkNextPhaseChange(subscription, 1, expectedPhaseTrialChange); clock.addDeltaFromReality(it.toDurationMillis()); assertListenerStatus(); PlanPhase currentPhase = subscription.getCurrentPhase(); assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN); subscriptionInternalApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate, internalCallContext); subscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext); subscription.cancel(callContext); subscription.uncancel(callContext); assertListenerStatus(); final Plan currentPlan = subscription.getCurrentPlan(); assertEquals(currentPlan.getProduct().getName(), prod); currentPhase = subscription.getCurrentPhase(); assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN);
subscriptionInternalApi.setChargedThroughDate(baseSubscription.getId(), newChargedThroughDate, internalCallContext); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); baseSubscription.cancel(callContext); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); assertTrue(aoSubscription.isSubscriptionFutureCancelled()); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); baseSubscription.uncancel(callContext); assertListenerStatus(); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); assertFalse(aoSubscription.isSubscriptionFutureCancelled()); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); baseSubscription.cancel(callContext); baseSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(baseSubscription.getId(), internalCallContext); assertEquals(baseSubscription.getState(), EntitlementState.ACTIVE); assertTrue(baseSubscription.isSubscriptionFutureCancelled()); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); assertTrue(aoSubscription.isSubscriptionFutureCancelled()); assertListenerStatus();
final List<SubscriptionBaseEvent> events = subscription.getEvents(); Assert.assertEquals(events.size(), 2); final SubscriptionBaseEvent phaseEvent = events.get(1); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(subscription.getBundleId(), bundle.getId()); assertEquals(subscription.getStartDate(), requestedDate); final SubscriptionBaseTransition transition = subscription.getPreviousTransition();
final DefaultSubscriptionBase subscription = (DefaultSubscriptionBase) subscriptions.get(0); final List<SubscriptionBaseTransition> transitions = subscription.getAllTransitions(); assertEquals(transitions.size(), 2); final SubscriptionBaseTransitionData initialMigrateBilling = (SubscriptionBaseTransitionData) transitions.get(1); assertEquals(initialMigrateBilling.getApiEventType(), ApiEventType.MIGRATE_BILLING); assertTrue(initialMigrateBilling.getEffectiveTransitionTime().compareTo(subscription.getChargedThroughDate()) == 0); assertEquals(initialMigrateBilling.getNextPlan().getName(), "shotgun-annual"); assertEquals(initialMigrateBilling.getNextPhase().getName(), "shotgun-annual-evergreen"); final List<SubscriptionBaseTransition> billingTransitions = subscription.getBillingTransitions(); assertEquals(billingTransitions.size(), 1); assertEquals(billingTransitions.get(0), initialMigrateBilling); subscription.changePlanWithDate("Assault-Rifle", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, clock.getUTCNow(), callContext); assertListenerStatus(); final List<SubscriptionBaseTransition> newTransitions = subscription.getAllTransitions(); assertEquals(newTransitions.size(), 3); assertTrue(newMigrateBilling.getEffectiveTransitionTime().compareTo(subscription.getChargedThroughDate()) == 0); assertTrue(newMigrateBilling.getEffectiveTransitionTime().compareTo(initialMigrateBilling.getEffectiveTransitionTime()) == 0); assertEquals(newMigrateBilling.getNextPlan().getName(), "assault-rifle-monthly"); assertEquals(newMigrateBilling.getNextPhase().getName(), "assault-rifle-monthly-evergreen"); final List<SubscriptionBaseTransition> newBillingTransitions = subscription.getBillingTransitions(); assertEquals(newBillingTransitions.size(), 1); assertEquals(newBillingTransitions.get(0), newMigrateBilling);
private void tChangePlanBundleAlignEOTWithNoChargeThroughDate(final String fromProd, final BillingPeriod fromTerm, final String fromPlanSet, final String toProd, final BillingPeriod toTerm, final String toPlanSet) { try { // CREATE final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, fromProd, fromTerm, fromPlanSet); // MOVE TO NEXT PHASE PlanPhase currentPhase = subscription.getCurrentPhase(); testListener.pushExpectedEvent(NextEvent.PHASE); final Interval it = new Interval(clock.getUTCNow(), clock.getUTCNow().plusDays(31)); clock.addDeltaFromReality(it.toDurationMillis()); final DateTime futureNow = clock.getUTCNow(); final DateTime nextExpectedPhaseChange = TestSubscriptionHelper.addDuration(subscription.getStartDate(), currentPhase.getDuration()); assertTrue(futureNow.isAfter(nextExpectedPhaseChange)); assertListenerStatus(); // CHANGE PLAN testListener.pushExpectedEvent(NextEvent.CHANGE); subscription.changePlan(toProd, toTerm, toPlanSet, callContext); assertListenerStatus(); // CHECK CHANGE PLAN currentPhase = subscription.getCurrentPhase(); checkChangePlan(subscription, toProd, ProductCategory.BASE, toTerm, PhaseType.EVERGREEN); assertListenerStatus(); } catch (SubscriptionBaseApiException e) { Assert.fail(e.getMessage()); } }
@Test(groups = "slow") public void testCreateCancelAddon() throws SubscriptionBaseApiException { final String baseProduct = "Shotgun"; final BillingPeriod baseTerm = BillingPeriod.ANNUAL; final String basePriceList = PriceListSet.DEFAULT_PRICELIST_NAME; DefaultSubscriptionBase baseSubscription = testUtil.createSubscription(bundle, baseProduct, baseTerm, basePriceList); final String aoProduct = "Telescopic-Scope"; final BillingPeriod aoTerm = BillingPeriod.MONTHLY; final String aoPriceList = PriceListSet.DEFAULT_PRICELIST_NAME; DefaultSubscriptionBase aoSubscription = testUtil.createSubscription(bundle, aoProduct, aoTerm, aoPriceList); assertEquals(aoSubscription.getState(), EntitlementState.ACTIVE); testListener.pushExpectedEvent(NextEvent.CANCEL); final DateTime now = clock.getUTCNow(); aoSubscription.cancel(callContext); assertListenerStatus(); aoSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext); assertEquals(aoSubscription.getState(), EntitlementState.CANCELLED); assertListenerStatus(); }
@Test(groups = "slow") public void testCancelSubscriptionEOTWithNoChargeThroughDate() throws SubscriptionBaseApiException { final String prod = "Shotgun"; final BillingPeriod term = BillingPeriod.MONTHLY; final String planSet = PriceListSet.DEFAULT_PRICELIST_NAME; // CREATE final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, prod, term, planSet); PlanPhase trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL); // NEXT PHASE final DateTime expectedPhaseTrialChange = TestSubscriptionHelper.addDuration(subscription.getStartDate(), trialPhase.getDuration()); testUtil.checkNextPhaseChange(subscription, 1, expectedPhaseTrialChange); // MOVE TO NEXT PHASE testListener.pushExpectedEvent(NextEvent.PHASE); final Interval it = new Interval(clock.getUTCNow(), clock.getUTCNow().plusDays(31)); clock.addDeltaFromReality(it.toDurationMillis()); assertListenerStatus(); trialPhase = subscription.getCurrentPhase(); assertEquals(trialPhase.getPhaseType(), PhaseType.EVERGREEN); testListener.pushExpectedEvent(NextEvent.CANCEL); // CANCEL subscription.cancel(callContext); assertListenerStatus(); final PlanPhase currentPhase = subscription.getCurrentPhase(); assertNull(currentPhase); testUtil.checkNextPhaseChange(subscription, 0, null); assertListenerStatus(); }
final BillingPeriod aoTerm1 = BillingPeriod.MONTHLY; final DefaultSubscriptionBase aoSubscription1 = testUtil.createSubscription(bundle, aoProduct1, aoTerm1, basePriceList); assertEquals(aoSubscription1.getState(), EntitlementState.ACTIVE); subscriptionInternalApi.setChargedThroughDate(aoSubscription1.getId(), ctd, internalCallContext); aoSubscription1.cancelWithDate(clock.getUTCNow(), callContext); assertListenerStatus();