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()); }
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; }
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.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(subscription.getBundleId(), bundle.getId()); assertEquals(subscription.getStartDate(), restartDate);
final SubscriptionBaseEvent phaseEvent = events.get(1); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION);
@Test(groups = "slow") public void testCreateWithInitialPhase() throws SubscriptionBaseApiException { final DateTime init = clock.getUTCNow(); final String productName = "Shotgun"; final BillingPeriod term = BillingPeriod.MONTHLY; final String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME; testListener.pushExpectedEvent(NextEvent.CREATE); final DefaultSubscriptionBase subscription = (DefaultSubscriptionBase) subscriptionInternalApi.createSubscription(bundle.getId(), testUtil.getProductSpecifier(productName, planSetName, term, PhaseType.EVERGREEN), clock.getUTCNow(), internalCallContext); assertNotNull(subscription); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); //assertEquals(subscription.getAccount(), account.getId()); assertEquals(subscription.getBundleId(), bundle.getId()); testUtil.assertDateWithin(subscription.getStartDate(), init, clock.getUTCNow()); testUtil.assertDateWithin(subscription.getBundleStartDate(), init, clock.getUTCNow()); final Plan currentPlan = subscription.getCurrentPlan(); assertNotNull(currentPlan); assertEquals(currentPlan.getProduct().getName(), productName); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.MONTHLY); final PlanPhase currentPhase = subscription.getCurrentPhase(); assertNotNull(currentPhase); assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN); assertListenerStatus(); }
assertEquals(newAoSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newAoSubscription.getState(), EntitlementState.CANCELLED); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION);
assertEquals(dryRunBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(dryRunBaseSubscription.getBundleId(), bundle.getId()); assertEquals(dryRunBaseSubscription.getStartDate(), baseSubscription.getStartDate()); assertEquals(realRunBaseSubscription.getAllTransitions().size(), 2); assertEquals(realRunBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(realRunBaseSubscription.getBundleId(), bundle.getId()); assertEquals(realRunBaseSubscription.getStartDate(), startDate);
assertNotNull(subscription); assertEquals(subscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION);
assertEquals(dryRunBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(dryRunBaseSubscription.getBundleId(), bundle.getId()); assertTrue(dryRunBaseSubscription.getStartDate().compareTo(baseSubscription.getStartDate()) == 0); assertEquals(realRunBaseSubscription.getAllTransitions().size(), 2); assertEquals(realRunBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(realRunBaseSubscription.getBundleId(), bundle.getId()); assertEquals(realRunBaseSubscription.getStartDate(), newCreateTime);
assertEquals(newAoSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newAoSubscription2.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newAoSubscription.getState(), EntitlementState.CANCELLED); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(newAoSubscription2.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1);
assertEquals(dryRunBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(dryRunBaseSubscription.getBundleId(), bundle.getId()); assertEquals(dryRunBaseSubscription.getStartDate(), baseSubscription.getStartDate()); assertEquals(realRunBaseSubscription.getAllTransitions().size(), expectedTransitions); assertEquals(realRunBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(realRunBaseSubscription.getBundleId(), bundle.getId()); assertEquals(realRunBaseSubscription.getStartDate(), baseSubscription.getStartDate());
assertEquals(newAoSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newAoSubscription.getState(), EntitlementState.CANCELLED); assertEquals(newAoSubscription.getAllTransitions().size(), 3); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1);
assertEquals(newAoSubscription.getState(), EntitlementState.ACTIVE); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newAoSubscription.getState(), EntitlementState.CANCELLED); assertEquals(newAoSubscription.getAllTransitions().size(), 3); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(newBaseSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1);
assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getStartDate(), aoSubscription.getStartDate()); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION); assertEquals(newAoSubscription.getAllTransitions().size(), 2); assertEquals(newAoSubscription.getStartDate(), aoRecreateDate); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1);
assertEquals(((DefaultSubscriptionBase) baseSubscription).getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(baseSubscription.getBundleId(), bundle.getId()); assertEquals(baseSubscription.getStartDate(), baseSubscription.getStartDate());
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); 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(newAoSubscription.getAllTransitions().size(), 3); assertEquals(newAoSubscription.getActiveVersion(), SubscriptionEvents.INITIAL_VERSION + 1); assertEquals(newAoSubscription.getBundleId(), bundle.getId()); assertEquals(newAoSubscription.getStartDate(), aoSubscription.getStartDate());