assertEquals(entitlement.getLastActiveProduct().getName(), "Shotgun"); assertEquals(entitlement.getLastActivePhase().getName(), "shotgun-monthly-evergreen"); assertEquals(entitlement.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement.getLastActiveProductCategory(), ProductCategory.BASE); assertEquals(entitlement.getSourceType(), EntitlementSourceType.NATIVE); assertEquals(entitlement.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME); assertEquals(entitlement.getLastActiveProduct().getName(), "Shotgun");
@Override public Response doOperation(final CallContext ctx) throws EntitlementApiException, AccountApiException { final Entitlement current = entitlementApi.getEntitlementForId(subscriptionId, callContext); final LocalDate inputLocalDate = toLocalDate(requestedDate); final Entitlement newEntitlement; final Account account = accountUserApi.getAccountById(current.getAccountId(), callContext); final PhaseType phaseType = entitlement.getPhaseType(); final PlanPhaseSpecifier planSpec = entitlement.getPlanName() != null ? new PlanPhaseSpecifier(entitlement.getPlanName(), phaseType) : new PlanPhaseSpecifier(entitlement.getProductName(), entitlement.getBillingPeriod(), entitlement.getPriceList(), phaseType); final List<PlanPhasePriceOverride> overrides = buildPlanPhasePriceOverrides(entitlement.getPriceOverrides(), account.getCurrency(), planSpec); if (requestedDate == null && billingPolicy == null) { newEntitlement = current.changePlan(new DefaultEntitlementSpecifier(planSpec, null, overrides), pluginProperties, ctx); } else if (billingPolicy == null) { newEntitlement = current.changePlanWithDate(new DefaultEntitlementSpecifier(planSpec, null, overrides), inputLocalDate, pluginProperties, ctx); } else { newEntitlement = current.changePlanOverrideBillingPolicy(new DefaultEntitlementSpecifier(planSpec, null, overrides), null, billingPolicy, pluginProperties, ctx); } isImmediateOp = newEntitlement.getLastActiveProduct().getName().equals(entitlement.getProductName()) && newEntitlement.getLastActivePlan().getRecurringBillingPeriod() == entitlement.getBillingPeriod() && newEntitlement.getLastActivePriceList().getName().equals(entitlement.getPriceList()); return Response.status(Status.NO_CONTENT).build(); }
assertEquals(baseEntitlement.getExternalKey(), account.getExternalKey()); assertEquals(baseEntitlement.getLastActiveProduct().getName(), "Knife"); assertEquals(baseEntitlement.getLastActivePlan().getName(), "knife-monthly-notrial"); assertEquals(baseEntitlement.getLastActiveProductCategory(), ProductCategory.STANDALONE); assertEquals(anotherStandaloneEntitlement.getLastActivePlan().getName(), "knife-monthly-notrial"); assertEquals(anotherStandaloneEntitlement.getLastActiveProductCategory(), ProductCategory.STANDALONE);
assertEquals(entitlement.getLastActiveProduct().getName(), "Shotgun"); assertEquals(entitlement.getLastActivePhase().getName(), "shotgun-monthly-trial"); assertEquals(entitlement.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement.getLastActiveProductCategory(), ProductCategory.BASE); assertEquals(entitlement.getSourceType(), EntitlementSourceType.NATIVE); assertEquals(entitlement.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME); assertEquals(entitlement.getLastActiveProduct().getName(), "Shotgun"); assertEquals(entitlement2.getLastActiveProduct().getName(), "Shotgun"); assertEquals(entitlement2.getLastActivePhase().getName(), "shotgun-monthly-trial"); assertEquals(entitlement2.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement2.getLastActiveProductCategory(), ProductCategory.BASE); assertEquals(entitlement2.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement2.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME); assertEquals(entitlement2.getLastActiveProduct().getName(), "Shotgun"); assertEquals(entitlement3.getLastActiveProduct().getName(), "Shotgun"); assertEquals(entitlement3.getLastActivePhase().getName(), "shotgun-monthly-trial"); assertEquals(entitlement3.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement3.getLastActiveProductCategory(), ProductCategory.BASE); assertEquals(entitlement3.getLastActivePlan().getName(), "shotgun-monthly"); assertEquals(entitlement3.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME); assertEquals(entitlement3.getLastActiveProduct().getName(), "Shotgun");
assertEquals(telescopicEntitlement.getLastActiveProduct().getName(), "Telescopic-Scope"); assertEquals(telescopicEntitlement.getLastActivePhase().getName(), "telescopic-scope-monthly-discount"); assertEquals(telescopicEntitlement.getLastActivePlan().getName(), "telescopic-scope-monthly"); assertEquals(telescopicEntitlement.getLastActiveProductCategory(), ProductCategory.ADD_ON);
@Test(groups = "slow") public void testCancelWithEntitlementPolicyEOTNoCTDAndImmediateChange() throws AccountApiException, EntitlementApiException, SubscriptionApiException, InterruptedException { 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); // Create entitlement and check each field testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.BLOCK); final UUID entitlementId = entitlementApi.createBaseEntitlement(account.getId(), new DefaultEntitlementSpecifier(spec), account.getExternalKey(), null, null, false, true, ImmutableList.<PluginProperty>of(), callContext); assertListenerStatus(); final Entitlement entitlement = entitlementApi.getEntitlementForId(entitlementId, callContext); // Immediate change during trial testListener.pushExpectedEvent(NextEvent.CREATE); final PlanPhaseSpecifier planPhaseSpecifier = new PlanPhaseSpecifier("Assault-Rifle", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME); entitlement.changePlan(new DefaultEntitlementSpecifier(planPhaseSpecifier), ImmutableList.<PluginProperty>of(), callContext); assertListenerStatus(); // Verify the change is immediate final Entitlement entitlement2 = entitlementApi.getEntitlementForId(entitlement.getId(), callContext); assertEquals(entitlement2.getLastActivePlan().getProduct().getName(), "Assault-Rifle"); testListener.pushExpectedEvents(NextEvent.CANCEL, NextEvent.BLOCK); final Entitlement cancelledEntitlement = entitlement.cancelEntitlementWithPolicy(EntitlementActionPolicy.END_OF_TERM, ImmutableList.<PluginProperty>of(), callContext); assertListenerStatus(); assertEquals(cancelledEntitlement.getState(), EntitlementState.CANCELLED); assertEquals(cancelledEntitlement.getEffectiveEndDate(), initialDate); // Entitlement started in trial on 2013-08-07, which is when we want the billing cancellation date to occur final Subscription subscription = subscriptionApi.getSubscriptionForEntitlementId(entitlement.getBaseEntitlementId(), callContext); assertEquals(subscription.getBillingEndDate(), new LocalDate(2013, 8, 7)); }
assertEquals(telescopicEntitlement.getLastActiveProduct().getName(), "Telescopic-Scope"); assertEquals(telescopicEntitlement.getLastActivePhase().getName(), "telescopic-scope-monthly-discount"); assertEquals(telescopicEntitlement.getLastActivePlan().getName(), "telescopic-scope-monthly"); assertEquals(telescopicEntitlement.getLastActiveProductCategory(), ProductCategory.ADD_ON);
assertEquals(createdEntitlement.getEffectiveEndDate(), null); assertEquals(createdEntitlement.getLastActiveProduct().getName(), "Shotgun"); assertEquals(createdEntitlement.getLastActivePlan().getName(), "shotgun-annual"); assertEquals(createdEntitlement.getLastActiveProductCategory(), ProductCategory.BASE); assertListenerStatus();
assertEquals(e.getCode(), ErrorCode.BLOCK_BLOCKED_ACTION.getCode()); final Entitlement latestEntitlement = entitlementApi.getEntitlementForId(entitlement.getId(), callContext); assertEquals(latestEntitlement.getLastActivePlan().getProduct().getName(), "Shotgun"); assertListenerStatus(); final Entitlement latestEntitlement = entitlementApi.getEntitlementForId(entitlement.getId(), callContext); assertEquals(latestEntitlement.getLastActivePlan().getProduct().getName(), "Assault-Rifle");