16 use Magento\Quote\Api\Data\CartExtensionInterface;
27 const TEST_NONCE =
'3ede7045-2aea-463e-9754-cd658ffeeb48';
37 private $quoteRepositoryMock;
42 private $billingAddressMock;
47 private $shippingAddressMock;
52 private $quoteUpdater;
59 $this->configMock = $this->getMockBuilder(Config::class)
60 ->disableOriginalConstructor()
62 $this->quoteRepositoryMock = $this->getMockBuilder(CartRepositoryInterface::class)
63 ->getMockForAbstractClass();
65 $this->billingAddressMock = $this->getMockBuilder(Address::class)
71 'setCollectShippingRates',
77 'setShouldIgnoreValidation',
80 )->disableOriginalConstructor()
82 $this->shippingAddressMock = $this->getMockBuilder(Address::class)
88 'setCollectShippingRates',
94 'setShouldIgnoreValidation' 96 )->disableOriginalConstructor()
101 $this->quoteRepositoryMock
112 $quoteMock = $this->getQuoteMock();
113 $paymentMock = $this->getPaymentMock();
115 $quoteMock->expects(self::once())
116 ->method(
'getPayment')
117 ->willReturn($paymentMock);
119 $paymentMock->expects(self::once())
120 ->method(
'setMethod')
122 $paymentMock->expects(self::once())
123 ->method(
'setAdditionalInformation')
126 $this->updateQuoteStep($quoteMock,
$details);
128 $this->quoteUpdater->execute(self::TEST_NONCE,
$details, $quoteMock);
134 private function disabledQuoteAddressValidationStep()
136 $this->billingAddressMock->expects(self::once())
137 ->method(
'setShouldIgnoreValidation')
139 $this->shippingAddressMock->expects(self::once())
140 ->method(
'setShouldIgnoreValidation')
142 $this->billingAddressMock->expects(self::once())
150 private function getDetails()
154 'payerId' =>
'FAKE_PAYER_ID',
155 'firstName' =>
'John',
157 'phone' =>
'312-123-4567',
158 'countryCode' =>
'US',
159 'shippingAddress' => [
160 'streetAddress' =>
'123 Division Street',
161 'extendedAddress' =>
'Apt. #1',
162 'locality' =>
'Chicago',
164 'postalCode' =>
'60618',
165 'countryCodeAlpha2' =>
'US',
166 'recipientName' =>
'John Doe',
168 'billingAddress' => [
169 'streetAddress' =>
'123 Billing Street',
170 'extendedAddress' =>
'Apt. #1',
171 'locality' =>
'Chicago',
173 'postalCode' =>
'60618',
174 'countryCodeAlpha2' =>
'US',
182 private function updateShippingAddressStep(array
$details)
184 $this->shippingAddressMock->expects(self::once())
185 ->method(
'setLastname')
187 $this->shippingAddressMock->expects(self::once())
188 ->method(
'setFirstname')
190 $this->shippingAddressMock->expects(self::once())
193 $this->shippingAddressMock->expects(self::once())
194 ->method(
'setCollectShippingRates')
197 $this->updateAddressDataStep($this->shippingAddressMock,
$details[
'shippingAddress']);
204 private function updateAddressDataStep(\PHPUnit_Framework_MockObject_MockObject $addressMock, array
$addressData)
206 $addressMock->expects(self::once())
207 ->method(
'setStreet')
209 $addressMock->expects(self::once())
212 $addressMock->expects(self::once())
213 ->method(
'setRegionCode')
215 $addressMock->expects(self::once())
216 ->method(
'setCountryId')
218 $addressMock->expects(self::once())
219 ->method(
'setPostcode')
227 private function updateQuoteAddressStep(\PHPUnit_Framework_MockObject_MockObject $quoteMock, array
$details)
229 $quoteMock->expects(self::exactly(2))
230 ->method(
'getIsVirtual')
233 $this->updateShippingAddressStep(
$details);
234 $this->updateBillingAddressStep(
$details);
240 private function updateBillingAddressStep(array
$details)
242 $this->configMock->expects(self::once())
243 ->method(
'isRequiredBillingAddress')
246 $this->updateAddressDataStep($this->billingAddressMock,
$details[
'billingAddress']);
248 $this->billingAddressMock->expects(self::once())
249 ->method(
'setLastname')
251 $this->billingAddressMock->expects(self::once())
252 ->method(
'setFirstname')
254 $this->billingAddressMock->expects(self::once())
263 private function updateQuoteStep(\PHPUnit_Framework_MockObject_MockObject $quoteMock, array
$details)
265 $quoteMock->expects(self::once())
266 ->method(
'setMayEditShippingAddress')
268 $quoteMock->expects(self::once())
269 ->method(
'setMayEditShippingMethod')
272 $quoteMock->expects(self::exactly(2))
273 ->method(
'getShippingAddress')
274 ->willReturn($this->shippingAddressMock);
275 $quoteMock->expects(self::exactly(2))
276 ->method(
'getBillingAddress')
277 ->willReturn($this->billingAddressMock);
279 $this->updateQuoteAddressStep($quoteMock,
$details);
280 $this->disabledQuoteAddressValidationStep();
282 $quoteMock->expects(self::once())
283 ->method(
'collectTotals');
285 $this->quoteRepositoryMock->expects(self::once())
293 private function getQuoteMock()
295 $quoteMock = $this->getMockBuilder(Quote::class)
300 'setMayEditShippingAddress',
301 'setMayEditShippingMethod',
303 'getShippingAddress',
305 'getExtensionAttributes' 307 )->disableOriginalConstructor()
310 $cartExtensionMock = $this->getMockBuilder(CartExtensionInterface::class)
311 ->setMethods([
'setShippingAssignments'])
312 ->disableOriginalConstructor()
313 ->getMockForAbstractClass();
315 $quoteMock->expects(self::any())
316 ->method(
'getExtensionAttributes')
317 ->willReturn($cartExtensionMock);
325 private function getPaymentMock()
327 return $this->getMockBuilder(Payment::class)
328 ->disableOriginalConstructor()
const PAYMENT_METHOD_NONCE