private void verifySubscriptionAddons(final Subscription subscription) { Assert.assertEquals(subscription.getAddOns().size(), 2); Assert.assertEquals(subscription.getAddOns().get(0).getAddOnCode(), "extra_users"); Assert.assertEquals(subscription.getAddOns().get(0).getQuantity(), (Integer) 2); Assert.assertEquals(subscription.getAddOns().get(0).getUnitAmountInCents(), (Integer) 1000); Assert.assertEquals(subscription.getAddOns().get(1).getAddOnCode(), "extra_ip"); Assert.assertEquals(subscription.getAddOns().get(1).getQuantity(), (Integer) 3); Assert.assertEquals(subscription.getAddOns().get(1).getUnitAmountInCents(), (Integer) 200); }
@Test(groups = "fast") public void testDeserialization() throws Exception { // See http://docs.recurly.com/api/subscriptions final String subscriptionData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<subscription href=\"https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96\">\n" + " <account href=\"https://api.recurly.com/v2/accounts/1\"/>\n" + " <plan href=\"https://api.recurly.com/v2/plans/gold\">\n" + " <plan_code>gold</plan_code>\n" + " <name>Gold plan</name>\n" + " </plan>\n" + " <uuid>44f83d7cba354d5b84812419f923ea96</uuid>\n" + " <state>active</state>\n" + " <unit_amount_in_cents type=\"integer\">800</unit_amount_in_cents>\n" + " <currency>EUR</currency>\n" + " <quantity type=\"integer\">1</quantity>\n" + " <activated_at type=\"datetime\">2011-05-27T07:00:00Z</activated_at>\n" + " <canceled_at nil=\"nil\"></canceled_at>\n" + " <expires_at nil=\"nil\"></expires_at>\n" + " <current_period_started_at type=\"datetime\">2011-06-27T07:00:00Z</current_period_started_at>\n" + " <current_period_ends_at type=\"datetime\">2010-07-27T07:00:00Z</current_period_ends_at>\n" + " <trial_started_at nil=\"nil\"></trial_started_at>\n" + " <trial_ends_at nil=\"nil\"></trial_ends_at>\n" + " <starts_at>2010-07-28T07:00:00Z</starts_at>\n" + " <a name=\"cancel\" href=\"https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96/cancel\" method=\"put\"/>\n" + " <a name=\"terminate\" href=\"https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96/terminate\" method=\"put\"/>\n" + " <a name=\"postpone\" href=\"https://api.recurly.com/v2/subscriptions/44f83d7cba354d5b84812419f923ea96/postpone\" method=\"put\"/>\n" + " <collection_method>manual</collection_method>\n" + " <net_terms type=\"integer\">10</net_terms>\n" + " <po_number>PO19384</po_number>\n" + " <first_renewal_date type=\"datetime\">2011-07-01T07:00:00Z</first_renewal_date>\n" + " <subscription_add_ons type=\"array\">\n" + " </subscription_add_ons>\n" + " <pending_subscription type=\"subscription\">\n" + " <plan href=\"https://api.recurly.com/v2/plans/silver\">\n" + " <plan_code>silver</plan_code>\n" + " <name>Silver plan</name>\n" + " </plan>\n" + " <unit_amount_in_cents type=\"integer\">400</unit_amount_in_cents>\n" + " <quantity type=\"integer\">1</quantity>\n" + " <subscription_add_ons type=\"array\">\n" + " </subscription_add_ons>\n" + " </pending_subscription>\n" + "</subscription>"; final Subscription subscription = verifySubscription(subscriptionData); verifyPaginationData(subscription); verifyPendingSubscription(subscription); Assert.assertEquals(subscription.getAddOns().size(), 0); }
/** * Terminate a particular {@link Subscription} by it's UUID * * @param subscription Subscription to terminate */ public void terminateSubscription(final Subscription subscription, final RefundOption refund) { doPUT( Subscription.SUBSCRIPTION_RESOURCE + "/" + subscription.getUuid() + "/terminate?refund=" + refund, subscription, Subscription.class); }
private void verifyPendingSubscription(final Subscription subscription) { Subscription pending = subscription.getPendingSubscription(); Assert.assertEquals(pending.getPlan().getPlanCode(), "silver"); Assert.assertEquals(pending.getPlan().getName(), "Silver plan"); Assert.assertEquals(pending.getUnitAmountInCents(), (Integer) 400); Assert.assertEquals(pending.getQuantity(), (Integer) 1); Assert.assertEquals(pending.getAddOns().size(), 0); }
private void verifyPaginationData(final Subscription subscription) { // Verify nested attributes Assert.assertEquals( subscription.getAccount().getHref(), "https://api.recurly.com/v2/accounts/1"); Assert.assertEquals(subscription.getAccount().getAccountCode(), "1"); }
private Subscription verifySubscription(final String subscriptionData) throws IOException { final Subscription subscription = xmlMapper.readValue(subscriptionData, Subscription.class); Assert.assertEquals(subscription.getUuid(), "44f83d7cba354d5b84812419f923ea96"); Assert.assertEquals(subscription.getState(), "active"); Assert.assertEquals(subscription.getUnitAmountInCents(), (Integer) 800); Assert.assertEquals(subscription.getCurrency(), "EUR"); Assert.assertEquals(subscription.getQuantity(), (Integer) 1); Assert.assertEquals(subscription.getActivatedAt(), new DateTime("2011-05-27T07:00:00Z")); Assert.assertNull(subscription.getCanceledAt(), ""); Assert.assertNull(subscription.getExpiresAt(), ""); Assert.assertEquals( subscription.getCurrentPeriodStartedAt(), new DateTime("2011-06-27T07:00:00Z")); Assert.assertEquals( subscription.getCurrentPeriodEndsAt(), new DateTime("2010-07-27T07:00:00Z")); Assert.assertNull(subscription.getTrialStartedAt(), ""); Assert.assertNull(subscription.getTrialEndsAt(), ""); Assert.assertEquals(subscription.getStartsAt(), new DateTime("2010-07-28T07:00:00Z")); Assert.assertEquals(subscription.getCollectionMethod(), "manual"); Assert.assertEquals(subscription.getNetTerms(), (Integer) 10); Assert.assertEquals(subscription.getPoNumber(), "PO19384"); Assert.assertEquals(subscription.getFirstRenewalDate(), new DateTime("2011-07-01T07:00:00Z")); return subscription; }
/** * Reactivating a canceled subscription * * <p>Reactivate a canceled subscription so it renews at the end of the current bill cycle. * * @param subscription Subscription object * @return -?- */ public Subscription reactivateSubscription(final Subscription subscription) { return doPUT( Subscription.SUBSCRIPTION_RESOURCE + "/" + subscription.getUuid() + "/reactivate", subscription, Subscription.class); }
/** * Cancel a subscription * * <p>Cancel a subscription so it remains active and then expires at the end of the current bill * cycle. * * @param subscription Subscription object * @return -?- */ public Subscription cancelSubscription(final Subscription subscription) { return doPUT( Subscription.SUBSCRIPTION_RESOURCE + "/" + subscription.getUuid() + "/cancel", subscription, Subscription.class); }