public void Create_InheritsAddOnsAndDiscountsFromPlan() {
TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN;
SubscriptionRequest request = new SubscriptionRequest
{
PaymentMethodToken = creditCard.Token,
PlanId = plan.Id
};
Result<Subscription> result = gateway.Subscription.Create(request);
Assert.IsTrue(result.IsSuccess());
Subscription subscription = result.Target;
List<AddOn> addOns = subscription.AddOns;
addOns.Sort(TestHelper.CompareModificationsById);
Assert.AreEqual(2, addOns.Count);
Assert.AreEqual(10M, addOns[0].Amount);
Assert.AreEqual(1, addOns[0].Quantity);
Assert.IsTrue(addOns[0].NeverExpires.Value);
Assert.IsNull(addOns[0].NumberOfBillingCycles);
Assert.AreEqual(0, addOns[0].CurrentBillingCycle);
Assert.AreEqual(20.00M, addOns[1].Amount);
Assert.AreEqual(1, addOns[1].Quantity);
Assert.IsTrue(addOns[1].NeverExpires.Value);
Assert.IsNull(addOns[1].NumberOfBillingCycles);
Assert.AreEqual(0, addOns[1].CurrentBillingCycle);
List<Discount> discounts = subscription.Discounts;
discounts.Sort(TestHelper.CompareModificationsById);
Assert.AreEqual(2, discounts.Count);
Assert.AreEqual(11M, discounts[0].Amount);
Assert.AreEqual(1, discounts[0].Quantity);
Assert.IsTrue(discounts[0].NeverExpires.Value);
Assert.IsNull(discounts[0].NumberOfBillingCycles);
Assert.AreEqual(0, discounts[0].CurrentBillingCycle);
Assert.AreEqual(7M, discounts[1].Amount);
Assert.AreEqual(1, discounts[1].Quantity);
Assert.IsTrue(discounts[1].NeverExpires.Value);
Assert.IsNull(discounts[1].NumberOfBillingCycles);
Assert.AreEqual(0, discounts[1].CurrentBillingCycle);
}