public void Create_CanAddAddOnsAndDiscounts()
{
TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN;
SubscriptionRequest request = new SubscriptionRequest
{
PaymentMethodToken = creditCard.Token,
PlanId = plan.Id,
AddOns = new AddOnsRequest
{
Add = new AddAddOnRequest[]
{
new AddAddOnRequest
{
InheritedFromId = "increase_30",
Amount = 35M,
NumberOfBillingCycles = 3,
Quantity = 8
}
},
Remove = new string[] { "increase_10", "increase_20" }
},
Discounts = new DiscountsRequest
{
Add = new AddDiscountRequest[]
{
new AddDiscountRequest
{
InheritedFromId = "discount_15",
Amount = 17M,
NeverExpires = true,
Quantity = 9
}
},
Remove = new string[] { "discount_7", "discount_11" }
}
};
Result<Subscription> result = gateway.Subscription.Create(request);
Assert.IsTrue(result.IsSuccess());
Subscription subscription = result.Target;
Assert.AreEqual(1, subscription.AddOns.Count);
Assert.AreEqual("increase_30", subscription.AddOns[0].Id);
Assert.AreEqual(35M, subscription.AddOns[0].Amount);
Assert.AreEqual(8, subscription.AddOns[0].Quantity);
Assert.IsFalse(subscription.AddOns[0].NeverExpires.Value);
Assert.AreEqual(3, subscription.AddOns[0].NumberOfBillingCycles);
Assert.AreEqual(0, subscription.AddOns[0].CurrentBillingCycle);
Assert.AreEqual(1, subscription.Discounts.Count);
Assert.AreEqual("discount_15", subscription.Discounts[0].Id);
Assert.AreEqual(17M, subscription.Discounts[0].Amount);
Assert.AreEqual(9, subscription.Discounts[0].Quantity);
Assert.IsTrue(subscription.Discounts[0].NeverExpires.Value);
Assert.IsNull(subscription.Discounts[0].NumberOfBillingCycles);
Assert.AreEqual(0, subscription.Discounts[0].CurrentBillingCycle);
}