public function testImportDataWithAddressAndPaymentProfileInstances() { $subscriptionId = 111; $addressId = 123; $profileId = 131; $addressMock = $this->createAddressMock(); $addressMock->expects($this->once())->method('getId')->willReturn($addressId); $profileMock = $this->createProfileMock(); $profileMock->expects($this->once())->method('getId')->willReturn($profileId); $data = [SubscriptionInterface::ID => $subscriptionId, SubscriptionInterface::SHIPPING_ADDRESS => $addressMock, SubscriptionInterface::PAYMENT_PROFILE => $profileMock]; $this->subscription->importData($data); $this->assertEquals($subscriptionId, $this->subscription->getId()); $this->assertEquals($addressId, $this->subscription->getShippingAddressId()); $this->assertEquals($profileId, $this->subscription->getPaymentProfileId()); $this->assertSame($profileMock, $this->subscription->getPaymentProfile()); $this->assertSame($addressMock, $this->subscription->getShippingAddress()); }
/** * @param \SubscribePro\Service\Subscription\SubscriptionInterface $subscription * @return \SubscribePro\Service\Subscription\SubscriptionInterface * @throws \SubscribePro\Exception\EntityInvalidDataException * @throws \SubscribePro\Exception\HttpException */ public function saveSubscription(SubscriptionInterface $subscription) { if (!$subscription->isValid()) { throw new EntityInvalidDataException('Not all required fields are set.'); } $url = $subscription->isNew() ? '/services/v2/subscription.json' : "/services/v2/subscriptions/{$subscription->getId()}.json"; $response = $this->httpClient->post($url, [self::API_NAME_SUBSCRIPTION => $subscription->getFormData()]); return $this->retrieveItem($response, self::API_NAME_SUBSCRIPTION, $subscription); }