From 2d2f1e05625ee4eb83dbabb78f09c667b863e554 Mon Sep 17 00:00:00 2001 From: Vaha Date: Thu, 2 Jan 2020 17:29:18 +0200 Subject: [PATCH 1/3] #26240: fixed logic for getting option price index for selected swatch option --- .../view/base/web/js/swatch-renderer.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js b/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js index ee55beb440f59..77c386c05323b 100644 --- a/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js +++ b/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js @@ -759,7 +759,7 @@ define([ $(document).trigger('updateMsrpPriceBlock', [ - _.findKey($widget.options.jsonConfig.index, $widget.options.jsonConfig.defaultValues), + this._getSelectedOptionPriceIndex(), $widget.options.jsonConfig.optionPrices ]); @@ -770,6 +770,21 @@ define([ $input.trigger('change'); }, + /** + * Get selected option price index + * + * @return {String|undefined} + * @private + */ + _getSelectedOptionPriceIndex: function () { + var allowedProduct = this._getAllowedProductWithMinPrice(this._CalcProducts()); + if (_.isEmpty(allowedProduct)) { + return undefined; + } + + return allowedProduct; + }, + /** * Get human readable attribute code (eg. size, color) by it ID from configuration * From c8c31bccd12a851901274093bc05968fc05df9e9 Mon Sep 17 00:00:00 2001 From: Vaha Date: Fri, 3 Jan 2020 08:46:52 +0200 Subject: [PATCH 2/3] #26240: added empty line before 'if' --- app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js b/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js index 77c386c05323b..aa7b6c7a076ea 100644 --- a/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js +++ b/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js @@ -778,6 +778,7 @@ define([ */ _getSelectedOptionPriceIndex: function () { var allowedProduct = this._getAllowedProductWithMinPrice(this._CalcProducts()); + if (_.isEmpty(allowedProduct)) { return undefined; } From 4ace1e6658a80a9b017cd5803b30fb3ed6189dd0 Mon Sep 17 00:00:00 2001 From: Nazar Klovanych Date: Mon, 3 Feb 2020 11:39:21 +0200 Subject: [PATCH 3/3] cover changes with jasmine test --- .../frontend/web/js/swatch-renderer.test.js | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.test.js index f486123ba0bd3..144bfa4a77bce 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.test.js @@ -98,5 +98,37 @@ define([ widget._UpdatePrice(); expect(productPriceMock.find().find.calls.count()).toBe(1); }); + + it('check getSelectedOptionPriceIndex', function () { + var optionMock = '
', + element = $('
' + + optionMock + '
' + ), + optionPricesMock = { + optionPrices: { + p: { + finalPrice: { + amount: 12 + } + } + } + }; + + widget.element = element; + widget.options.classes.attributeClass = 'swatch-attribute'; + widget.options.jsonConfig = optionPricesMock; + widget.optionsMap = { + 2: { + 4: { + products: 'p' + }, + hasOwnProperty: jasmine.createSpy().and.returnValue(true) + }, + hasOwnProperty: jasmine.createSpy().and.returnValue(true) + }; + + expect(widget._getSelectedOptionPriceIndex()).toBe('p'); + }); }); });