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; }
@Test(groups = "fast") public void testEventsForCancelledSubscriptionBeforeTransfer() throws Exception { final DateTime subscriptionStartTime = clock.getUTCNow(); final DateTime subscriptionCancelTime = subscriptionStartTime.plusDays(1); final ImmutableList<ExistingEvent> existingEvents = ImmutableList.<ExistingEvent>of(createEvent(subscriptionStartTime, SubscriptionBaseTransitionType.CREATE), createEvent(subscriptionCancelTime, SubscriptionBaseTransitionType.CANCEL)); final SubscriptionBuilder subscriptionBuilder = new SubscriptionBuilder(); final DefaultSubscriptionBase subscription = new DefaultSubscriptionBase(subscriptionBuilder); final DateTime transferDate = subscriptionStartTime.plusDays(10); final List<SubscriptionBaseEvent> events = transferApi.toEvents(existingEvents, subscription, transferDate, callContext); Assert.assertEquals(events.size(), 0); }
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; }
@Test(groups = "fast") public void testEventsForCancelledSubscriptionAfterTransfer() throws Exception { final DateTime subscriptionStartTime = clock.getUTCNow(); final DateTime subscriptionCancelTime = subscriptionStartTime.plusDays(1); final ImmutableList<ExistingEvent> existingEvents = ImmutableList.<ExistingEvent>of(createEvent(subscriptionStartTime, SubscriptionBaseTransitionType.CREATE), createEvent(subscriptionCancelTime, SubscriptionBaseTransitionType.CANCEL)); final SubscriptionBuilder subscriptionBuilder = new SubscriptionBuilder(); final DefaultSubscriptionBase subscription = new DefaultSubscriptionBase(subscriptionBuilder); final DateTime transferDate = subscriptionStartTime.plusHours(1); final List<SubscriptionBaseEvent> events = transferApi.toEvents(existingEvents, subscription, transferDate, callContext); Assert.assertEquals(events.size(), 1); Assert.assertEquals(events.get(0).getType(), EventType.API_USER); Assert.assertEquals(events.get(0).getEffectiveDate(), transferDate); Assert.assertEquals(((ApiEventTransfer) events.get(0)).getEventType(), ApiEventType.TRANSFER); }
private List<SubscriptionBaseEvent> transferBundle(final DateTime migrateSubscriptionEventEffectiveDate, final DateTime migrateBillingEventEffectiveDate, final DateTime transferDate) throws SubscriptionBaseTransferApiException { final ImmutableList<ExistingEvent> existingEvents = createMigrateEvents(migrateSubscriptionEventEffectiveDate, migrateBillingEventEffectiveDate); final SubscriptionBuilder subscriptionBuilder = new SubscriptionBuilder(); final DefaultSubscriptionBase subscription = new DefaultSubscriptionBase(subscriptionBuilder); return transferApi.toEvents(existingEvents, subscription, transferDate, callContext); }