From ba0472f27f53a51ba532ec33fb017663902f34ab Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Wed, 22 Nov 2017 14:58:03 +0200 Subject: [PATCH 01/10] Correctly set payment information when using paypal --- app/code/Magento/Paypal/Model/Express.php | 7 +++- .../Paypal/Test/Unit/Model/ExpressTest.php | 11 ++++- .../web/js/action/set-payment-method.js | 40 +++---------------- 3 files changed, 21 insertions(+), 37 deletions(-) diff --git a/app/code/Magento/Paypal/Model/Express.php b/app/code/Magento/Paypal/Model/Express.php index 8ba8adcede511..accb22b265335 100644 --- a/app/code/Magento/Paypal/Model/Express.php +++ b/app/code/Magento/Paypal/Model/Express.php @@ -669,7 +669,7 @@ public function getApi() public function assignData(\Magento\Framework\DataObject $data) { parent::assignData($data); - + $additionalData = $data->getData(PaymentInterface::KEY_ADDITIONAL_DATA); if (!is_array($additionalData)) { @@ -677,6 +677,11 @@ public function assignData(\Magento\Framework\DataObject $data) } foreach ($additionalData as $key => $value) { + // Skip extension attributes + if ($key === \Magento\Framework\Api\ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY) { + continue; + } + $this->getInfoInstance()->setAdditionalInformation($key, $value); } return $this; diff --git a/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php b/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php index 6a2d33d010190..3d224262c99f1 100644 --- a/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php +++ b/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php @@ -161,12 +161,21 @@ public function testAssignData() { $transportValue = 'something'; + $extensionAttributeMock = $this->getMockForAbstractClass( + \Magento\Quote\Api\Data\PaymentExtensionInterface::class, + [], + '', + false, + false + ); + $data = new DataObject( [ PaymentInterface::KEY_ADDITIONAL_DATA => [ Express\Checkout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT => $transportValue, Express\Checkout::PAYMENT_INFO_TRANSPORT_PAYER_ID => $transportValue, - Express\Checkout::PAYMENT_INFO_TRANSPORT_TOKEN => $transportValue + Express\Checkout::PAYMENT_INFO_TRANSPORT_TOKEN => $transportValue, + \Magento\Framework\Api\ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY => $extensionAttributeMock ] ] ); 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 index a994f9defd583..650d5794a2445 100644 --- 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 @@ -10,42 +10,12 @@ define([ 'mage/storage', 'Magento_Checkout/js/model/error-processor', 'Magento_Customer/js/model/customer', - 'Magento_Checkout/js/model/full-screen-loader' -], function ($, quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader) { + 'Magento_Checkout/js/model/full-screen-loader', + 'Magento_Checkout/js/action/set-payment-information' +], function ($, quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader, setPaymentInformation) { 'use strict'; return function (messageContainer) { - var serviceUrl, - payload, - paymentData = quote.paymentMethod(); - - /** - * Checkout for guest and registered customer. - */ - if (!customer.isLoggedIn()) { - serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/set-payment-information', { - cartId: quote.getQuoteId() - }); - payload = { - cartId: quote.getQuoteId(), - email: quote.guestEmail, - paymentMethod: paymentData - }; - } else { - serviceUrl = urlBuilder.createUrl('/carts/mine/set-payment-information', {}); - payload = { - cartId: quote.getQuoteId(), - paymentMethod: paymentData - }; - } - fullScreenLoader.startLoader(); - - return storage.post( - serviceUrl, JSON.stringify(payload) - ).fail(function (response) { - errorProcessor.process(response, messageContainer); - }).always(function () { - fullScreenLoader.stopLoader(); - }); + return setPaymentInformation(messageContainer, quote.paymentMethod()); }; -}); +}); \ No newline at end of file From 48923e1c95a235b490d3a119139bb762e947c68f Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Wed, 22 Nov 2017 15:18:16 +0200 Subject: [PATCH 02/10] Added missing new line at the end of the file --- .../Paypal/view/frontend/web/js/action/set-payment-method.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 650d5794a2445..feb2538b0517e 100644 --- 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 @@ -18,4 +18,4 @@ define([ return function (messageContainer) { return setPaymentInformation(messageContainer, quote.paymentMethod()); }; -}); \ No newline at end of file +}); From 774cb4c67ece33041901035602aa62c180ae76b1 Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Tue, 28 Nov 2017 17:42:41 +0200 Subject: [PATCH 03/10] Remove unnecessary dependencies and fixed unit test case excessively long variable name --- app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php | 4 ++-- .../view/frontend/web/js/action/set-payment-method.js | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php b/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php index 3d224262c99f1..1b8c33622e784 100644 --- a/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php +++ b/app/code/Magento/Paypal/Test/Unit/Model/ExpressTest.php @@ -161,7 +161,7 @@ public function testAssignData() { $transportValue = 'something'; - $extensionAttributeMock = $this->getMockForAbstractClass( + $extensionAttribute = $this->getMockForAbstractClass( \Magento\Quote\Api\Data\PaymentExtensionInterface::class, [], '', @@ -175,7 +175,7 @@ public function testAssignData() Express\Checkout::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT => $transportValue, Express\Checkout::PAYMENT_INFO_TRANSPORT_PAYER_ID => $transportValue, Express\Checkout::PAYMENT_INFO_TRANSPORT_TOKEN => $transportValue, - \Magento\Framework\Api\ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY => $extensionAttributeMock + \Magento\Framework\Api\ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY => $extensionAttribute ] ] ); 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 index feb2538b0517e..63e34437c6f90 100644 --- 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 @@ -4,15 +4,9 @@ */ 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', - 'Magento_Checkout/js/model/full-screen-loader', 'Magento_Checkout/js/action/set-payment-information' -], function ($, quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader, setPaymentInformation) { +], function (quote, setPaymentInformation) { 'use strict'; return function (messageContainer) { From 12145bca8cc87f5072cd5fcbcbd85493c012af4d Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Tue, 28 Nov 2017 19:58:20 +0200 Subject: [PATCH 04/10] Updated paypal jasmine tests --- .../paypal-express-abstract.test.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js index dc520c5238568..4716f16d08b97 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js @@ -1,3 +1,14 @@ + + +continueToPayPal -> +Magento_Checkout/js/model/payment/additional-validators::validate -> true +selectPaymentMethod +setPaymentMethodAction -> called + + + + + /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. @@ -16,6 +27,13 @@ define([ describe('paypal/js/view/payment/method-renderer/paypal-express-abstract', function () { var injector = new Squire(), + successPromise = jasmine.createSpyObj('successPromise', ['done']), + setPaymentMock = jasmine.createSpy('set-payment-information', function () { + return successPromise; + }).and.callThrough(), + validateMock = jasmine.createSpy('validate', function () { + return true; + }).and.callThrough(), mocks = { 'Magento_Checkout/js/model/quote': { billingAddress: ko.observable(), @@ -23,6 +41,10 @@ define([ paymentMethod: ko.observable(), totals: ko.observable({}) + }, + 'Magento_Checkout/js/action/set-payment-information': setPaymentMock, + 'Magento_Checkout/js/model/payment/additional-validators': { + validate: validateMock } }, paypalExpressAbstract, @@ -85,6 +107,25 @@ define([ }, 500); }); + it('setPaymentMethodAction is called before redirect to paypal', function () { + spyOn(paypalExpressAbstract, 'selectPaymentMethod'); + paypalExpressAbstract.continueToPayPal(); + expect(paypalExpressAbstract.selectPaymentMethod).toHaveBeenCalled(); + expect(validateMock).toHaveBeenCalled(); + expect(validateMock.calls.mostRecent()).toEqual(jasmine.objectContaining({ + object: mocks['Magento_Checkout/js/model/payment/additional-validators'], + args: [], + returnValue: true + })); + expect(setPaymentMock).toHaveBeenCalled(); + expect(setPaymentMock.calls.mostRecent()).toEqual(jasmine.objectContaining({ + object: mocks['Magento_Checkout/js/action/set-payment-information'], + args: [], + returnValue: successPromise + })); + expect(successPromise.done).toHaveBeenCalledWith(jasmine.any(Function)); + }); + afterAll(function (done) { tplElement.remove(); done(); From 7bdb92156a3ea588196d7bdc8b9899b894092b7c Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Tue, 28 Nov 2017 20:33:19 +0200 Subject: [PATCH 05/10] Corrected typo in jasmine test --- .../method-renderer/paypal-express-abstract.test.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js index 4716f16d08b97..71c3b3a9e77bf 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js @@ -1,14 +1,3 @@ - - -continueToPayPal -> -Magento_Checkout/js/model/payment/additional-validators::validate -> true -selectPaymentMethod -setPaymentMethodAction -> called - - - - - /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. From 70f5e3860919d97c58c443862d6e6bcf7ff0a5a2 Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Thu, 30 Nov 2017 14:24:26 +0200 Subject: [PATCH 06/10] Fixed JS Unit test --- .../payment/method-renderer/paypal-express-abstract.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js index 71c3b3a9e77bf..47e3507ea1321 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Paypal/frontend/js/view/payment/method-renderer/paypal-express-abstract.test.js @@ -108,8 +108,6 @@ define([ })); expect(setPaymentMock).toHaveBeenCalled(); expect(setPaymentMock.calls.mostRecent()).toEqual(jasmine.objectContaining({ - object: mocks['Magento_Checkout/js/action/set-payment-information'], - args: [], returnValue: successPromise })); expect(successPromise.done).toHaveBeenCalledWith(jasmine.any(Function)); From 92f620f87717d4ddee66726a403b70fb79b151d4 Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Mon, 18 Dec 2017 22:54:25 +0200 Subject: [PATCH 07/10] Checkout agreements mixin tests --- .../js/model/place-order-mixin.test.js | 49 +++++++++++++++++++ .../set-payment-information-mixin.test.js | 49 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js create mode 100644 dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js new file mode 100644 index 0000000000000..531ab0f4b1813 --- /dev/null +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js @@ -0,0 +1,49 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +define([ + 'squire' +], function (Squire) { + 'use strict'; + + describe('Magento_CheckoutAgreements/js/model/place-order-mixin', function () { + var injector = new Squire(), + mocks = { + 'Magento_Checkout/js/action/place-order': jasmine.createSpy('placeOrderAction'), + 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') + }, + mixin, + placeOrderAction; + + beforeEach(function (done) { + window.checkoutConfig = { + checkoutAgreements: { + isEnabled: true + } + }; + injector.mock(mocks); + injector.require([ + 'Magento_CheckoutAgreements/js/model/place-order-mixin', + 'Magento_Checkout/js/action/place-order' + ], function (Mixin, placeOrder) { + mixin = Mixin; + placeOrderAction = placeOrder; + done(); + }); + }); + + describe('Magento_Checkout/js/action/place-order', function () { + it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { + var messageContainer = jasmine.createSpy('messageContainer'), + paymentData = {}; + mixin(placeOrderAction)(paymentData, messageContainer); + expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) + .toHaveBeenCalledWith(paymentData); + expect(mocks['Magento_Checkout/js/action/place-order']) + .toHaveBeenCalledWith(paymentData, messageContainer); + }); + }); + }); +}); diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js new file mode 100644 index 0000000000000..8ab4019388c20 --- /dev/null +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js @@ -0,0 +1,49 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +define([ + 'squire' +], function (Squire) { + 'use strict'; + + describe('Magento_CheckoutAgreements/js/model/set-payment-information-mixin', function () { + var injector = new Squire(), + mocks = { + 'Magento_Checkout/js/action/set-payment-information': jasmine.createSpy('placeOrderAction'), + 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') + }, + mixin, + placeOrderAction; + + beforeEach(function (done) { + window.checkoutConfig = { + checkoutAgreements: { + isEnabled: true + } + }; + injector.mock(mocks); + injector.require([ + 'Magento_CheckoutAgreements/js/model/set-payment-information-mixin', + 'Magento_Checkout/js/action/set-payment-information' + ], function (Mixin, setPaymentInformation) { + mixin = Mixin; + placeOrderAction = setPaymentInformation; + done(); + }); + }); + + describe('Magento_Checkout/js/action/set-payment-information', function () { + it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { + var messageContainer = jasmine.createSpy('messageContainer'), + paymentData = {}; + mixin(placeOrderAction)(messageContainer, paymentData); + expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) + .toHaveBeenCalledWith(paymentData); + expect(mocks['Magento_Checkout/js/action/set-payment-information']) + .toHaveBeenCalledWith(messageContainer, paymentData); + }); + }); + }); +}); From 1c7123fe902932c77053873bd73d452bb74e5f77 Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Mon, 18 Dec 2017 23:30:25 +0200 Subject: [PATCH 08/10] Test that the mixins are correctly defined and applied --- .../frontend/js/model/place-order-mixin.test.js | 6 ++++++ .../js/model/set-payment-information-mixin.test.js | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js index 531ab0f4b1813..0615cd23674fd 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js @@ -14,6 +14,7 @@ define([ 'Magento_Checkout/js/action/place-order': jasmine.createSpy('placeOrderAction'), 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') }, + defaultContext = require.s.contexts._, mixin, placeOrderAction; @@ -35,6 +36,11 @@ define([ }); describe('Magento_Checkout/js/action/place-order', function () { + it('Magento_CheckoutAgreements/js/model/place-order-mixin is applied', function () { + var placeOrderMixins = defaultContext.config.config.mixins['Magento_Checkout/js/action/place-order']; + expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/place-order-mixin']).toBe(true); + }); + it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { var messageContainer = jasmine.createSpy('messageContainer'), paymentData = {}; diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js index 8ab4019388c20..28c1ec7df761a 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js @@ -14,6 +14,7 @@ define([ 'Magento_Checkout/js/action/set-payment-information': jasmine.createSpy('placeOrderAction'), 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') }, + defaultContext = require.s.contexts._, mixin, placeOrderAction; @@ -35,6 +36,13 @@ define([ }); describe('Magento_Checkout/js/action/set-payment-information', function () { + it('Magento_CheckoutAgreements/js/model/set-payment-information-mixin is applied', function () { + var placeOrderMixins = defaultContext + .config.config.mixins['Magento_Checkout/js/action/set-payment-information']; + expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/set-payment-information-mixin']) + .toBe(true); + }); + it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { var messageContainer = jasmine.createSpy('messageContainer'), paymentData = {}; From 9d5fa49fd44e14cde60c65e3c28486e4f5e3ddfa Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Mon, 18 Dec 2017 23:35:58 +0200 Subject: [PATCH 09/10] Add newline after var declarations --- .../frontend/js/model/place-order-mixin.test.js | 2 ++ .../frontend/js/model/set-payment-information-mixin.test.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js index 0615cd23674fd..1906a02f192e7 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js @@ -38,12 +38,14 @@ define([ describe('Magento_Checkout/js/action/place-order', function () { it('Magento_CheckoutAgreements/js/model/place-order-mixin is applied', function () { var placeOrderMixins = defaultContext.config.config.mixins['Magento_Checkout/js/action/place-order']; + expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/place-order-mixin']).toBe(true); }); it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { var messageContainer = jasmine.createSpy('messageContainer'), paymentData = {}; + mixin(placeOrderAction)(paymentData, messageContainer); expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) .toHaveBeenCalledWith(paymentData); diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js index 28c1ec7df761a..a33c039992a4b 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js @@ -39,6 +39,7 @@ define([ it('Magento_CheckoutAgreements/js/model/set-payment-information-mixin is applied', function () { var placeOrderMixins = defaultContext .config.config.mixins['Magento_Checkout/js/action/set-payment-information']; + expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/set-payment-information-mixin']) .toBe(true); }); @@ -46,6 +47,7 @@ define([ it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { var messageContainer = jasmine.createSpy('messageContainer'), paymentData = {}; + mixin(placeOrderAction)(messageContainer, paymentData); expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) .toHaveBeenCalledWith(paymentData); From a35b4686c1b95dc356595246410e527d7c57e2ac Mon Sep 17 00:00:00 2001 From: Ricards Z Date: Mon, 18 Dec 2017 23:49:00 +0200 Subject: [PATCH 10/10] Fix too many nested callbacks in jasmine tests --- .../js/model/place-order-mixin.test.js | 74 +++++++++--------- .../set-payment-information-mixin.test.js | 77 +++++++++---------- 2 files changed, 73 insertions(+), 78 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js index 1906a02f192e7..545daf0a330c9 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/place-order-mixin.test.js @@ -8,50 +8,48 @@ define([ ], function (Squire) { 'use strict'; - describe('Magento_CheckoutAgreements/js/model/place-order-mixin', function () { - var injector = new Squire(), - mocks = { - 'Magento_Checkout/js/action/place-order': jasmine.createSpy('placeOrderAction'), - 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') - }, - defaultContext = require.s.contexts._, - mixin, - placeOrderAction; + var injector = new Squire(), + mocks = { + 'Magento_Checkout/js/action/place-order': jasmine.createSpy('placeOrderAction'), + 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') + }, + defaultContext = require.s.contexts._, + mixin, + placeOrderAction; - beforeEach(function (done) { - window.checkoutConfig = { - checkoutAgreements: { - isEnabled: true - } - }; - injector.mock(mocks); - injector.require([ - 'Magento_CheckoutAgreements/js/model/place-order-mixin', - 'Magento_Checkout/js/action/place-order' - ], function (Mixin, placeOrder) { - mixin = Mixin; - placeOrderAction = placeOrder; - done(); - }); + beforeEach(function (done) { + window.checkoutConfig = { + checkoutAgreements: { + isEnabled: true + } + }; + injector.mock(mocks); + injector.require([ + 'Magento_CheckoutAgreements/js/model/place-order-mixin', + 'Magento_Checkout/js/action/place-order' + ], function (Mixin, placeOrder) { + mixin = Mixin; + placeOrderAction = placeOrder; + done(); }); + }); - describe('Magento_Checkout/js/action/place-order', function () { - it('Magento_CheckoutAgreements/js/model/place-order-mixin is applied', function () { - var placeOrderMixins = defaultContext.config.config.mixins['Magento_Checkout/js/action/place-order']; + describe('Magento_CheckoutAgreements/js/model/place-order-mixin', function () { + it('mixin is applied to Magento_Checkout/js/action/place-order', function () { + var placeOrderMixins = defaultContext.config.config.mixins['Magento_Checkout/js/action/place-order']; - expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/place-order-mixin']).toBe(true); - }); + expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/place-order-mixin']).toBe(true); + }); - it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { - var messageContainer = jasmine.createSpy('messageContainer'), - paymentData = {}; + it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { + var messageContainer = jasmine.createSpy('messageContainer'), + paymentData = {}; - mixin(placeOrderAction)(paymentData, messageContainer); - expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) - .toHaveBeenCalledWith(paymentData); - expect(mocks['Magento_Checkout/js/action/place-order']) - .toHaveBeenCalledWith(paymentData, messageContainer); - }); + mixin(placeOrderAction)(paymentData, messageContainer); + expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) + .toHaveBeenCalledWith(paymentData); + expect(mocks['Magento_Checkout/js/action/place-order']) + .toHaveBeenCalledWith(paymentData, messageContainer); }); }); }); diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js index a33c039992a4b..ed525bfd96a6c 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/CheckoutAgreements/frontend/js/model/set-payment-information-mixin.test.js @@ -8,52 +8,49 @@ define([ ], function (Squire) { 'use strict'; - describe('Magento_CheckoutAgreements/js/model/set-payment-information-mixin', function () { - var injector = new Squire(), - mocks = { - 'Magento_Checkout/js/action/set-payment-information': jasmine.createSpy('placeOrderAction'), - 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') - }, - defaultContext = require.s.contexts._, - mixin, - placeOrderAction; + var injector = new Squire(), + mocks = { + 'Magento_Checkout/js/action/set-payment-information': jasmine.createSpy('placeOrderAction'), + 'Magento_CheckoutAgreements/js/model/agreements-assigner': jasmine.createSpy('agreementsAssigner') + }, + defaultContext = require.s.contexts._, + mixin, + placeOrderAction; - beforeEach(function (done) { - window.checkoutConfig = { - checkoutAgreements: { - isEnabled: true - } - }; - injector.mock(mocks); - injector.require([ - 'Magento_CheckoutAgreements/js/model/set-payment-information-mixin', - 'Magento_Checkout/js/action/set-payment-information' - ], function (Mixin, setPaymentInformation) { - mixin = Mixin; - placeOrderAction = setPaymentInformation; - done(); - }); + beforeEach(function (done) { + window.checkoutConfig = { + checkoutAgreements: { + isEnabled: true + } + }; + injector.mock(mocks); + injector.require([ + 'Magento_CheckoutAgreements/js/model/set-payment-information-mixin', + 'Magento_Checkout/js/action/set-payment-information' + ], function (Mixin, setPaymentInformation) { + mixin = Mixin; + placeOrderAction = setPaymentInformation; + done(); }); + }); - describe('Magento_Checkout/js/action/set-payment-information', function () { - it('Magento_CheckoutAgreements/js/model/set-payment-information-mixin is applied', function () { - var placeOrderMixins = defaultContext - .config.config.mixins['Magento_Checkout/js/action/set-payment-information']; + describe('Magento_CheckoutAgreements/js/model/set-payment-information-mixin', function () { + it('mixin is applied to Magento_Checkout/js/action/set-payment-information', function () { + var placeOrderMixins = defaultContext + .config.config.mixins['Magento_Checkout/js/action/set-payment-information']; - expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/set-payment-information-mixin']) - .toBe(true); - }); + expect(placeOrderMixins['Magento_CheckoutAgreements/js/model/set-payment-information-mixin']).toBe(true); + }); - it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { - var messageContainer = jasmine.createSpy('messageContainer'), - paymentData = {}; + it('Magento_CheckoutAgreements/js/model/agreements-assigner is called', function () { + var messageContainer = jasmine.createSpy('messageContainer'), + paymentData = {}; - mixin(placeOrderAction)(messageContainer, paymentData); - expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) - .toHaveBeenCalledWith(paymentData); - expect(mocks['Magento_Checkout/js/action/set-payment-information']) - .toHaveBeenCalledWith(messageContainer, paymentData); - }); + mixin(placeOrderAction)(messageContainer, paymentData); + expect(mocks['Magento_CheckoutAgreements/js/model/agreements-assigner']) + .toHaveBeenCalledWith(paymentData); + expect(mocks['Magento_Checkout/js/action/set-payment-information']) + .toHaveBeenCalledWith(messageContainer, paymentData); }); }); });