Assert.assertEquals(subscription.getSubscriptionEvents().size(), 7); Assert.assertEquals(subscription.getSubscriptionEvents().get(0).getServiceName(), "entitlement-service"); Assert.assertEquals(subscription.getSubscriptionEvents().get(0).getServiceStateName(), "ENT_STARTED"); Assert.assertNull(subscription.getSubscriptionEvents().get(0).getPrevPhase()); Assert.assertEquals(subscription.getSubscriptionEvents().get(0).getNextPhase().getName(), "shotgun-annual-trial"); Assert.assertEquals(subscription.getSubscriptionEvents().get(1).getServiceName(), "billing-service"); Assert.assertEquals(subscription.getSubscriptionEvents().get(1).getServiceStateName(), "START_BILLING"); Assert.assertNull(subscription.getSubscriptionEvents().get(1).getPrevPhase()); Assert.assertEquals(subscription.getSubscriptionEvents().get(1).getNextPhase().getName(), "shotgun-annual-trial"); Assert.assertEquals(subscription.getSubscriptionEvents().get(2).getServiceName(), "entitlement+billing-service"); Assert.assertEquals(subscription.getSubscriptionEvents().get(2).getServiceStateName(), "PHASE"); Assert.assertEquals(subscription.getSubscriptionEvents().get(2).getPrevPhase().getName(), "shotgun-annual-trial"); Assert.assertEquals(subscription.getSubscriptionEvents().get(2).getNextPhase().getName(), "shotgun-annual-evergreen"); Assert.assertEquals(subscription.getSubscriptionEvents().get(3).getServiceName(), "entitlement-service"); Assert.assertEquals(subscription.getSubscriptionEvents().get(3).getServiceStateName(), "ENT_BLOCKED"); Assert.assertEquals(subscription.getSubscriptionEvents().get(3).getPrevPhase().getName(), "shotgun-annual-evergreen"); Assert.assertEquals(subscription.getSubscriptionEvents().get(3).getNextPhase().getName(), "shotgun-annual-evergreen"); Assert.assertEquals(subscription.getSubscriptionEvents().get(4).getServiceName(), "billing-service"); Assert.assertEquals(subscription.getSubscriptionEvents().get(4).getServiceStateName(), "ENT_BLOCKED"); Assert.assertEquals(subscription.getSubscriptionEvents().get(4).getPrevPhase().getName(), "shotgun-annual-evergreen"); Assert.assertEquals(subscription.getSubscriptionEvents().get(4).getNextPhase().getName(), "shotgun-annual-evergreen"); Assert.assertEquals(subscription.getSubscriptionEvents().get(5).getServiceName(), "entitlement-service"); Assert.assertEquals(subscription.getSubscriptionEvents().get(5).getServiceStateName(), "ENT_CLEAR");
private SubscriptionEvent getLastEventBeforeDate(final UUID subscriptionId, final String requestedDateString, final HttpServletRequest request) throws SubscriptionApiException { final TenantContext tenantContext = context.createTenantContextNoAccountId(request); final DateTime requestedDateTime = requestedDateString != null ? DATE_TIME_FORMATTER.parseDateTime(requestedDateString).toDateTime(DateTimeZone.UTC) : clock.getUTCNow(); final LocalDate requestedDate = requestedDateTime.toLocalDate(); final Subscription subscription = subscriptionApi.getSubscriptionForEntitlementId(subscriptionId, tenantContext); SubscriptionEvent lastEventBeforeRequestedDate = null; for (final SubscriptionEvent subscriptionEvent : subscription.getSubscriptionEvents()) { if (lastEventBeforeRequestedDate == null) { if (subscriptionEvent.getEffectiveDate().compareTo(requestedDate) > 0) { // requestedDate too far in the past, before subscription start date return null; } lastEventBeforeRequestedDate = subscriptionEvent; } if (subscriptionEvent.getEffectiveDate().compareTo(requestedDate) > 0) { break; } else { lastEventBeforeRequestedDate = subscriptionEvent; } } return lastEventBeforeRequestedDate; }
@Test(groups = "slow") public void testSubscriptionCreationWithFutureDate() throws AccountApiException, SubscriptionApiException, EntitlementApiException { final String externalKey = "vritti"; final LocalDate initialDate = new LocalDate(2013, 8, 7); clock.setDay(initialDate); final Account account = createAccount(getAccountData(7)); final PlanPhaseSpecifier spec = new PlanPhaseSpecifier("Shotgun", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, null); //2013-08-07 final LocalDate effectiveDate = initialDate.plusMonths(1); // Create entitlement and check each field final UUID entitlementId = entitlementApi.createBaseEntitlement(account.getId(), new DefaultEntitlementSpecifier(spec), externalKey, effectiveDate, effectiveDate, false, true, ImmutableList.<PluginProperty>of(), callContext); final Entitlement entitlement = entitlementApi.getEntitlementForId(entitlementId, callContext); final Subscription subscription = subscriptionApi.getSubscriptionForEntitlementId(entitlement.getId(), callContext); final List<SubscriptionEvent> events = subscription.getSubscriptionEvents(); assertEquals(events.size(), 3); assertEquals(events.get(0).getSubscriptionEventType(), SubscriptionEventType.START_ENTITLEMENT); assertEquals(events.get(0).getEffectiveDate().compareTo(effectiveDate), 0); assertEquals(events.get(1).getSubscriptionEventType(), SubscriptionEventType.START_BILLING); assertEquals(events.get(1).getEffectiveDate().compareTo(effectiveDate), 0); assertEquals(events.get(2).getSubscriptionEventType(), SubscriptionEventType.PHASE); assertEquals(events.get(2).getEffectiveDate().compareTo(effectiveDate.plusMonths(1)), 0); assertListenerStatus(); }
final List<SubscriptionEvent> subscriptionEvents = subscription.getSubscriptionEvents(); final SubscriptionEvent firstEvent = subscriptionEvents.isEmpty() ? null : subscriptionEvents.get(0); if (subscription.getLastActiveProduct() == null) {