diff --git a/app/code/Magento/CatalogRule/etc/webapi_soap/events.xml b/app/code/Magento/CatalogRule/etc/webapi_soap/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..69fcd117f77002a0bfb84df8e45ceccb79123bf7 --- /dev/null +++ b/app/code/Magento/CatalogRule/etc/webapi_soap/events.xml @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="catalog_product_get_final_price"> + <observer name="catalogrule" instance="Magento\CatalogRule\Model\Observer" method="processFrontFinalPrice" /> + </event> + <event name="prepare_catalog_product_collection_prices"> + <observer name="catalogrule" instance="Magento\CatalogRule\Model\Observer" method="prepareCatalogProductCollectionPrices" /> + </event> +</config> diff --git a/app/code/Magento/Checkout/etc/webapi_rest/events.xml b/app/code/Magento/Checkout/etc/webapi_rest/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..64b405aacf3b2dce5e2b1411f9dba70705e3c177 --- /dev/null +++ b/app/code/Magento/Checkout/etc/webapi_rest/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_save_after"> + <observer name="set_checkout_quote_id" instance="Magento\Checkout\Model\Observer" method="salesQuoteSaveAfter" /> + </event> +</config> diff --git a/app/code/Magento/Checkout/etc/webapi_soap/events.xml b/app/code/Magento/Checkout/etc/webapi_soap/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..64b405aacf3b2dce5e2b1411f9dba70705e3c177 --- /dev/null +++ b/app/code/Magento/Checkout/etc/webapi_soap/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_save_after"> + <observer name="set_checkout_quote_id" instance="Magento\Checkout\Model\Observer" method="salesQuoteSaveAfter" /> + </event> +</config> diff --git a/app/code/Magento/Customer/etc/webapi_rest/events.xml b/app/code/Magento/Customer/etc/webapi_rest/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..a605a1082011245cd4947b702800eb504bd917cf --- /dev/null +++ b/app/code/Magento/Customer/etc/webapi_rest/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_save_after"> + <observer name="customer_visitor" instance="Magento\Customer\Model\Visitor" method="bindQuoteCreate" /> + </event> +</config> diff --git a/app/code/Magento/Customer/etc/webapi_soap/events.xml b/app/code/Magento/Customer/etc/webapi_soap/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..a605a1082011245cd4947b702800eb504bd917cf --- /dev/null +++ b/app/code/Magento/Customer/etc/webapi_soap/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_save_after"> + <observer name="customer_visitor" instance="Magento\Customer\Model\Visitor" method="bindQuoteCreate" /> + </event> +</config> diff --git a/app/code/Magento/Downloadable/etc/adminhtml/events.xml b/app/code/Magento/Downloadable/etc/events.xml similarity index 85% rename from app/code/Magento/Downloadable/etc/adminhtml/events.xml rename to app/code/Magento/Downloadable/etc/events.xml index 46f63240abdee844f9859bd2bd180fc3c9682efc..47dc66111e8da011772662ef6e547547ada65ce6 100644 --- a/app/code/Magento/Downloadable/etc/adminhtml/events.xml +++ b/app/code/Magento/Downloadable/etc/events.xml @@ -5,7 +5,7 @@ * See COPYING.txt for license details. */ --> -<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> <event name="sales_order_item_save_commit_after"> <observer name="downloadable_observer" instance="Magento\Downloadable\Model\Observer" method="saveDownloadableOrderItem" /> </event> diff --git a/app/code/Magento/Downloadable/etc/frontend/events.xml b/app/code/Magento/Downloadable/etc/frontend/events.xml index ac54f059a374941dbacd66c49a5e67549d052f93..0b39fd0e3909d6ae458afd5d18568197412da811 100644 --- a/app/code/Magento/Downloadable/etc/frontend/events.xml +++ b/app/code/Magento/Downloadable/etc/frontend/events.xml @@ -6,12 +6,6 @@ */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> - <event name="sales_order_item_save_commit_after"> - <observer name="downloadable_observer" instance="Magento\Downloadable\Model\Observer" method="saveDownloadableOrderItem" /> - </event> - <event name="sales_order_save_commit_after"> - <observer name="downloadable_observer" instance="Magento\Downloadable\Model\Observer" method="setLinkStatus" /> - </event> <event name="sales_model_service_quote_submit_success"> <observer name="checkout_type_onepage_save_order_after" instance="Magento\Downloadable\Model\Observer" method="setHasDownloadableProducts" /> </event> diff --git a/app/code/Magento/Msrp/etc/webapi_rest/events.xml b/app/code/Magento/Msrp/etc/webapi_rest/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..e4fb9f4b8aa02ca88a0230128a7a26f369ea4432 --- /dev/null +++ b/app/code/Magento/Msrp/etc/webapi_rest/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_collect_totals_after"> + <observer name="catalog_msrp" instance="Magento\Msrp\Model\Observer\Frontend\Quote\SetCanApplyMsrp" method="execute" /> + </event> +</config> diff --git a/app/code/Magento/Msrp/etc/webapi_soap/events.xml b/app/code/Magento/Msrp/etc/webapi_soap/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..e4fb9f4b8aa02ca88a0230128a7a26f369ea4432 --- /dev/null +++ b/app/code/Magento/Msrp/etc/webapi_soap/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_collect_totals_after"> + <observer name="catalog_msrp" instance="Magento\Msrp\Model\Observer\Frontend\Quote\SetCanApplyMsrp" method="execute" /> + </event> +</config> diff --git a/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js b/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js new file mode 100644 index 0000000000000000000000000000000000000000..ffae21860511e483f79b59db7b4b4c10bd02d5eb --- /dev/null +++ b/app/code/Magento/Paypal/view/frontend/web/js/action/set-payment-method.js @@ -0,0 +1,53 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +define( + [ + 'jquery', + 'Magento_Checkout/js/model/quote', + 'Magento_Checkout/js/model/url-builder', + 'mage/storage', + 'Magento_Checkout/js/model/error-processor', + 'Magento_Customer/js/model/customer' + ], + function ($, quote, urlBuilder, storage, errorProcessor, customer) { + 'use strict'; + + return function () { + var serviceUrl, + payload, + paymentData = quote.paymentMethod(); + + /** + * Checkout for guest and registered customer. + */ + if (!customer.isLoggedIn()) { + serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/selected-payment-method', { + quoteId: quote.getQuoteId() + }); + payload = { + cartId: quote.getQuoteId(), + method: paymentData + }; + } else { + serviceUrl = urlBuilder.createUrl('/carts/mine/selected-payment-method', {}); + payload = { + cartId: quote.getQuoteId(), + method: paymentData + }; + } + return storage.put( + serviceUrl, JSON.stringify(payload) + ).done( + function () { + $.mage.redirect(window.checkoutConfig.payment.paypalExpress.redirectUrl[quote.paymentMethod().method]); + } + ).fail( + function (response) { + errorProcessor.process(response); + } + ); + }; + } +); diff --git a/app/code/Magento/Paypal/view/frontend/web/js/view/payment/method-renderer/paypal-express-abstract.js b/app/code/Magento/Paypal/view/frontend/web/js/view/payment/method-renderer/paypal-express-abstract.js index 8f5b3e9f16509a3022c5b26b333b1785dfade68a..285bb05dc69e6bece200ba58ea60ba0e1588e5f8 100644 --- a/app/code/Magento/Paypal/view/frontend/web/js/view/payment/method-renderer/paypal-express-abstract.js +++ b/app/code/Magento/Paypal/view/frontend/web/js/view/payment/method-renderer/paypal-express-abstract.js @@ -1,5 +1,5 @@ /** - * Copyright © 2015 Magento. All rights reserved. + * Copyright В© 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ /*browser:true*/ @@ -7,9 +7,10 @@ define( [ 'jquery', - 'Magento_Checkout/js/view/payment/default' + 'Magento_Checkout/js/view/payment/default', + 'Magento_Paypal/js/action/set-payment-method' ], - function ($, Component) { + function ($, Component, setPaymentMethodAction) { 'use strict'; return Component.extend({ @@ -67,8 +68,10 @@ define( }, /** Redirect to paypal */ - continueToPayPal: function() { - $.mage.redirect(window.checkoutConfig.payment.paypalExpress.redirectUrl[this.item.method]); + continueToPayPal: function () { + //update payment method information if additional data was changed + this.selectPaymentMethod(); + setPaymentMethodAction(); return false; } }); diff --git a/app/code/Magento/Quote/Model/PaymentMethodManagement.php b/app/code/Magento/Quote/Model/PaymentMethodManagement.php index dee5ff38db125b24c40792d3c714e42c79dd4120..d29e3732d747f9b920c40ee2931040b8b70a8907 100644 --- a/app/code/Magento/Quote/Model/PaymentMethodManagement.php +++ b/app/code/Magento/Quote/Model/PaymentMethodManagement.php @@ -38,6 +38,7 @@ class PaymentMethodManagement implements \Magento\Quote\Api\PaymentMethodManagem \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, \Magento\Payment\Model\Checks\ZeroTotal $zeroTotalValidator, \Magento\Payment\Model\MethodList $methodList + ) { $this->quoteRepository = $quoteRepository; $this->zeroTotalValidator = $zeroTotalValidator; @@ -68,10 +69,6 @@ class PaymentMethodManagement implements \Magento\Quote\Api\PaymentMethodManagem $payment->importData($data); if ($quote->isVirtual()) { - // check if billing address is set - if ($quote->getBillingAddress()->getCountryId() === null) { - throw new InvalidTransitionException(__('Billing address is not set')); - } $quote->getBillingAddress()->setPaymentMethod($payment->getMethod()); } else { // check if shipping address is set diff --git a/app/code/Magento/Quote/Test/Unit/Model/PaymentMethodManagementTest.php b/app/code/Magento/Quote/Test/Unit/Model/PaymentMethodManagementTest.php index c81db89b83e9b7409f8a07d582ff710f53da9dea..acb2282f1a96d8139a4f438eae6e2212d1c82622 100644 --- a/app/code/Magento/Quote/Test/Unit/Model/PaymentMethodManagementTest.php +++ b/app/code/Magento/Quote/Test/Unit/Model/PaymentMethodManagementTest.php @@ -152,7 +152,6 @@ class PaymentMethodManagementTest extends \PHPUnit_Framework_TestCase '', false ); - $billingAddressMock->expects($this->once())->method('getCountryId')->willReturn(100); $billingAddressMock->expects($this->once()) ->method('setPaymentMethod') ->with($paymentMethod) @@ -160,7 +159,7 @@ class PaymentMethodManagementTest extends \PHPUnit_Framework_TestCase $quoteMock->expects($this->exactly(2))->method('getPayment')->willReturn($paymentMock); $quoteMock->expects($this->exactly(2))->method('isVirtual')->willReturn(true); - $quoteMock->expects($this->exactly(2))->method('getBillingAddress')->willReturn($billingAddressMock); + $quoteMock->expects($this->once())->method('getBillingAddress')->willReturn($billingAddressMock); $methodInstance = $this->getMockForAbstractClass('Magento\Payment\Model\MethodInterface'); $paymentMock->expects($this->once())->method('getMethodInstance')->willReturn($methodInstance); @@ -178,49 +177,6 @@ class PaymentMethodManagementTest extends \PHPUnit_Framework_TestCase $this->assertEquals($paymentId, $this->model->set($cartId, $methodMock)); } - /** - * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException - * @expectedExceptionMessage Billing address is not set - */ - public function testSetVirtualProductThrowsExceptionIfBillingAddressNotSet() - { - $cartId = 100; - $methodData = ['method' => 'data']; - - $quoteMock = $this->getMock( - 'Magento\Quote\Model\Quote', - ['getPayment', 'isVirtual', 'getBillingAddress'], - [], - '', - false - ); - $this->quoteRepositoryMock->expects($this->once())->method('get')->with($cartId)->willReturn($quoteMock); - - $methodMock = $this->getMock('Magento\Quote\Model\Quote\Payment', ['setChecks', 'getData'], [], '', false); - $methodMock->expects($this->once()) - ->method('setChecks') - ->with([ - \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_CHECKOUT, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_COUNTRY, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_USE_FOR_CURRENCY, - \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX, - ]) - ->willReturnSelf(); - $methodMock->expects($this->once())->method('getData')->willReturn($methodData); - - $paymentMock = $this->getMock('Magento\Quote\Model\Quote\Payment', ['importData', 'getMethod'], [], '', false); - $paymentMock->expects($this->once())->method('importData')->with($methodData)->willReturnSelf(); - - $billingAddressMock = $this->getMock('Magento\Quote\Model\Quote\Address', ['getCountryId'], [], '', false); - $billingAddressMock->expects($this->once())->method('getCountryId')->willReturn(null); - - $quoteMock->expects($this->once())->method('getPayment')->willReturn($paymentMock); - $quoteMock->expects($this->once())->method('isVirtual')->willReturn(true); - $quoteMock->expects($this->once())->method('getBillingAddress')->willReturn($billingAddressMock); - - $this->model->set($cartId, $methodMock); - } - /** * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException * @expectedExceptionMessage The requested Payment Method is not available. @@ -269,7 +225,6 @@ class PaymentMethodManagementTest extends \PHPUnit_Framework_TestCase '', false ); - $billingAddressMock->expects($this->once())->method('getCountryId')->willReturn(100); $billingAddressMock->expects($this->once()) ->method('setPaymentMethod') ->with($paymentMethod) @@ -277,7 +232,7 @@ class PaymentMethodManagementTest extends \PHPUnit_Framework_TestCase $quoteMock->expects($this->once())->method('getPayment')->willReturn($paymentMock); $quoteMock->expects($this->exactly(2))->method('isVirtual')->willReturn(true); - $quoteMock->expects($this->exactly(2))->method('getBillingAddress')->willReturn($billingAddressMock); + $quoteMock->expects($this->once())->method('getBillingAddress')->willReturn($billingAddressMock); $methodInstance = $this->getMockForAbstractClass('Magento\Payment\Model\MethodInterface'); $paymentMock->expects($this->once())->method('getMethodInstance')->willReturn($methodInstance); diff --git a/app/code/Magento/Quote/etc/frontend/events.xml b/app/code/Magento/Quote/etc/events.xml similarity index 81% rename from app/code/Magento/Quote/etc/frontend/events.xml rename to app/code/Magento/Quote/etc/events.xml index 8c38cda0dbe8436fc9d64a6fed11f2d2a8582b96..b14058b03e5fd77f6eec749ddb213a1c41a4a825 100644 --- a/app/code/Magento/Quote/etc/frontend/events.xml +++ b/app/code/Magento/Quote/etc/events.xml @@ -5,7 +5,7 @@ * See COPYING.txt for license details. */ --> -<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> <event name="sales_quote_address_collect_totals_before"> <observer name="sales_customer_validate_vat_number" instance="Magento\Quote\Model\Observer\Frontend\Quote\Address\CollectTotals" method="dispatch" /> </event> diff --git a/app/code/Magento/Reports/etc/webapi_rest/events.xml b/app/code/Magento/Reports/etc/webapi_rest/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e8d93278a9def14d6032555c93f01f73e2b323b --- /dev/null +++ b/app/code/Magento/Reports/etc/webapi_rest/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_item_save_before"> + <observer name="reports" instance="Magento\Reports\Model\Event\Observer" method="checkoutCartAddProduct" /> + </event> +</config> diff --git a/app/code/Magento/Reports/etc/webapi_soap/events.xml b/app/code/Magento/Reports/etc/webapi_soap/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e8d93278a9def14d6032555c93f01f73e2b323b --- /dev/null +++ b/app/code/Magento/Reports/etc/webapi_soap/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_item_save_before"> + <observer name="reports" instance="Magento\Reports\Model\Event\Observer" method="checkoutCartAddProduct" /> + </event> +</config> diff --git a/app/code/Magento/Sales/etc/webapi_rest/events.xml b/app/code/Magento/Sales/etc/webapi_rest/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..763c0dcd5bc94cdd50da178debad4dc3146dd207 --- /dev/null +++ b/app/code/Magento/Sales/etc/webapi_rest/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_address_collect_totals_after"> + <observer name="sales_customer_validate_vat_number" instance="Magento\Sales\Model\Observer\Frontend\Quote\RestoreCustomerGroupId" method="execute" /> + </event> +</config> diff --git a/app/code/Magento/Sales/etc/webapi_soap/events.xml b/app/code/Magento/Sales/etc/webapi_soap/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..763c0dcd5bc94cdd50da178debad4dc3146dd207 --- /dev/null +++ b/app/code/Magento/Sales/etc/webapi_soap/events.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="sales_quote_address_collect_totals_after"> + <observer name="sales_customer_validate_vat_number" instance="Magento\Sales\Model\Observer\Frontend\Quote\RestoreCustomerGroupId" method="execute" /> + </event> +</config> diff --git a/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php index 6cf9dacdbb0b184ddb1df7116a213f16a7f4416c..8a6115ef70be0b80a8e42b1ee9df067fafdbb544 100644 --- a/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Quote/Api/PaymentMethodManagementTest.php @@ -131,44 +131,6 @@ class PaymentMethodManagementTest extends \Magento\TestFramework\TestCase\Webapi $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); } - /** - * @magentoApiDataFixture Magento/Checkout/_files/quote_with_virtual_product_saved.php - * @expectedException \Exception - * @expectedExceptionMessage Billing address is not set - */ - public function testSetPaymentWithVirtualProductWithoutAddress() - { - /** @var \Magento\Quote\Model\Quote $quote */ - $quote = $this->objectManager->create('\Magento\Quote\Model\Quote'); - $quote->load('test_order_with_virtual_product_without_address', 'reserved_order_id'); - $cartId = $quote->getId(); - - $serviceInfo = [ - 'rest' => [ - 'resourcePath' => self::RESOURCE_PATH . $cartId . '/selected-payment-method', - 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT, - ], - 'soap' => [ - 'service' => self::SERVICE_NAME, - 'serviceVersion' => self::SERVICE_VERSION, - 'operation' => self::SERVICE_NAME . 'set', - ], - ]; - - $requestData = [ - "cartId" => $cartId, - "method" => [ - 'method' => 'checkmo', - 'po_number' => '200', - 'cc_owner' => 'tester', - 'cc_type' => 'test', - 'cc_exp_year' => '2014', - 'cc_exp_month' => '1', - ], - ]; - $this->assertNotNull($this->_webApiCall($serviceInfo, $requestData)); - } - /** * @magentoApiDataFixture Magento/Checkout/_files/quote_with_simple_product_saved.php * @expectedException \Exception