function testUpdate_canReplaceEntireSetOfAddonsAndDiscounts() { $oldCreditCard = Braintree_SubscriptionTestHelper::createCreditCard(); $plan = Braintree_SubscriptionTestHelper::addOnDiscountPlan(); $subscription = Braintree_Subscription::create(array('paymentMethodToken' => $oldCreditCard->token, 'price' => '54.99', 'planId' => $plan['id']))->subscription; $result = Braintree_Subscription::update($subscription->id, array('addOns' => array('add' => array(array('inheritedFromId' => 'increase_30'), array('inheritedFromId' => 'increase_20'))), 'discounts' => array('add' => array(array('inheritedFromId' => 'discount_15'))), 'options' => array('replaceAllAddOnsAndDiscounts' => true))); $this->assertTrue($result->success); $subscription = $result->subscription; $this->assertEquals(2, sizeof($subscription->addOns)); $addOns = $subscription->addOns; Braintree_SubscriptionTestHelper::sortModificationsById($addOns); $this->assertEquals($addOns[0]->id, "increase_20"); $this->assertEquals($addOns[1]->id, "increase_30"); $this->assertEquals(1, sizeof($subscription->discounts)); $discounts = $subscription->discounts; $this->assertEquals($discounts[0]->id, "discount_15"); }
function testSnapshotPlanIdAddOnsAndDiscountsFromSubscription() { $creditCard = Braintree_SubscriptionTestHelper::createCreditCard(); $plan = Braintree_SubscriptionTestHelper::triallessPlan(); $result = Braintree_Subscription::create(array('paymentMethodToken' => $creditCard->token, 'planId' => $plan['id'], 'addOns' => array('add' => array(array('amount' => '11.00', 'inheritedFromId' => 'increase_10', 'quantity' => 2, 'numberOfBillingCycles' => 5), array('amount' => '21.00', 'inheritedFromId' => 'increase_20', 'quantity' => 3, 'numberOfBillingCycles' => 6))), 'discounts' => array('add' => array(array('amount' => '7.50', 'inheritedFromId' => 'discount_7', 'quantity' => 2, 'neverExpires' => true))))); $transaction = $result->subscription->transactions[0]; $this->assertEquals($transaction->planId, $plan['id']); $addOns = $transaction->addOns; Braintree_SubscriptionTestHelper::sortModificationsById($addOns); $this->assertEquals($addOns[0]->amount, "11.00"); $this->assertEquals($addOns[0]->id, "increase_10"); $this->assertEquals($addOns[0]->quantity, 2); $this->assertEquals($addOns[0]->numberOfBillingCycles, 5); $this->assertFalse($addOns[0]->neverExpires); $this->assertEquals($addOns[1]->amount, "21.00"); $this->assertEquals($addOns[1]->id, "increase_20"); $this->assertEquals($addOns[1]->quantity, 3); $this->assertEquals($addOns[1]->numberOfBillingCycles, 6); $this->assertFalse($addOns[1]->neverExpires); $discounts = $transaction->discounts; $this->assertEquals($discounts[0]->amount, "7.50"); $this->assertEquals($discounts[0]->id, "discount_7"); $this->assertEquals($discounts[0]->quantity, 2); $this->assertEquals($discounts[0]->numberOfBillingCycles, null); $this->assertTrue($discounts[0]->neverExpires); }