From 2596ca7de56a5175338230a7e54d4e8fda902851 Mon Sep 17 00:00:00 2001 From: korostii <24894168+korostii@users.noreply.github.com> Date: Wed, 30 Oct 2019 02:12:38 +0200 Subject: [PATCH 1/8] Fix #25243 --- app/code/Magento/Ui/view/frontend/web/js/model/messages.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/code/Magento/Ui/view/frontend/web/js/model/messages.js b/app/code/Magento/Ui/view/frontend/web/js/model/messages.js index fb9a20c054da2..f0680fe6eaae5 100644 --- a/app/code/Magento/Ui/view/frontend/web/js/model/messages.js +++ b/app/code/Magento/Ui/view/frontend/web/js/model/messages.js @@ -48,6 +48,10 @@ define([ message = messageObj.message.replace(expr, function (varName) { varName = varName.substr(1); + if (!isNaN(varName)) { + varName--; + } + if (messageObj.parameters.hasOwnProperty(varName)) { return messageObj.parameters[varName]; } From 2f5909e408ae977435540b260fbabbfa4462a062 Mon Sep 17 00:00:00 2001 From: akartavtsev Date: Mon, 13 Jan 2020 12:54:13 +0200 Subject: [PATCH 2/8] Added tests for app/code/Magento/Ui/view/frontend/web/js/model/messages.js --- .../Ui/frontend/js/model/messages.test.js | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js new file mode 100644 index 0000000000000..eb618d2756db1 --- /dev/null +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -0,0 +1,128 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +define([ + 'ko', + 'uiRegistry', + 'Magento_Ui/js/model/messages' +], function (ko, registry, Constr) { + 'use strict'; + + describe('Magento_Ui/js/model/messages', function () { + var obj = new Constr({ + provider: 'provName', + name: '', + index: '' + }); + + registry.set('provName', { + /** Stub */ + on: function () { + }, + + /** Stub */ + get: function () { + }, + + /** Stub */ + set: function () { + } + }); + + describe('initialize method', function () { + it('check for existing', function () { + expect(obj).toBeDefined(); + }); + }); + + describe('add method', function () { + it('simple message', function () { + var messageObj = { + message: "Message test" + }, + type = [], + returnedObj = ["Message test"]; + expect(obj.add(messageObj, type)).toEqual(true); + expect(type).toEqual(returnedObj); + }); + + it('message with parameters', function () { + var messageObj = { + message: "Message test case %1, case %2 and case %3", + parameters: [ + "one", + "two", + 'three' + ] + }, + type = [], + returnedObj = ["Message test case " + messageObj.parameters[0] + ", case " + + messageObj.parameters[1] + " and case " + messageObj.parameters[2]]; + expect(obj.add(messageObj, type)).toEqual(true); + expect(type).toEqual(returnedObj); + }); + }); + + describe('check methods: hasMessages, addErrorMessage, getErrorMessages', function () { + it('hasMessages method before adding messages', function () { + expect(obj.hasMessages()).toEqual(false); + }); + + it('check addErrorMessage method', function () { + var messageObj = { + message: "Error message test" + }; + + expect(obj.addErrorMessage(messageObj)).toEqual(true); + }); + + it('check getErrorMessage method', function () { + var errorMessages = ko.observableArray(["Error message test"]); + + expect(obj.getErrorMessages()()).toEqual(errorMessages()); + }); + + + it('hasMessages method after adding Error messages', function () { + expect(obj.hasMessages()).toEqual(true); + }); + }); + + describe('check clean method for Error messages', function () { + it('check for cleaning messages', function () { + obj.clear(); + expect(obj.getErrorMessages()()).toEqual([]); + expect(obj.hasMessages()).toEqual(false); + }); + }); + + describe('check methods: hasMessages, addSuccessMessage, getSuccessMessages', function () { + it('check addSuccessMessage and getSuccessMessage', function () { + var messageObj = { + message: "Success message test" + }; + + expect(obj.addSuccessMessage(messageObj)).toEqual(true); + }); + + it('check method getSuccessMessage', function () { + var successMessages = ko.observableArray(["Success message test"]); + expect(obj.getSuccessMessages()()).toEqual(successMessages()); + }); + + it('hasMessages method after adding Success messages', function () { + expect(obj.hasMessages()).toEqual(true); + }); + }); + + describe('check clean method for Success messages', function () { + it('check for cleaning messages', function () { + obj.clear(); + expect(obj.getSuccessMessages()()).toEqual([]); + expect(obj.hasMessages()).toEqual(false); + }); + }); + }); +}); From d1b63cbb6b682597b0a725e672f10c1305ac643f Mon Sep 17 00:00:00 2001 From: akartavtsev Date: Mon, 13 Jan 2020 12:58:28 +0200 Subject: [PATCH 3/8] Added tests for app/code/Magento/Ui/view/frontend/web/js/model/messages.js --- .../tests/app/code/Magento/Ui/frontend/js/model/messages.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js index eb618d2756db1..d4acd143b773d 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -84,7 +84,6 @@ define([ expect(obj.getErrorMessages()()).toEqual(errorMessages()); }); - it('hasMessages method after adding Error messages', function () { expect(obj.hasMessages()).toEqual(true); }); From f08857bbb8950a154e67f71bb83f4a19dc341640 Mon Sep 17 00:00:00 2001 From: akartavtsev Date: Mon, 13 Jan 2020 14:13:42 +0200 Subject: [PATCH 4/8] fixed syntax error --- .../Ui/frontend/js/model/messages.test.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js index d4acd143b773d..eb1de977ffefb 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -4,10 +4,9 @@ */ define([ - 'ko', 'uiRegistry', 'Magento_Ui/js/model/messages' -], function (ko, registry, Constr) { +], function (registry, Constr) { 'use strict'; describe('Magento_Ui/js/model/messages', function () { @@ -44,6 +43,7 @@ define([ }, type = [], returnedObj = ["Message test"]; + expect(obj.add(messageObj, type)).toEqual(true); expect(type).toEqual(returnedObj); }); @@ -60,28 +60,29 @@ define([ type = [], returnedObj = ["Message test case " + messageObj.parameters[0] + ", case " + messageObj.parameters[1] + " and case " + messageObj.parameters[2]]; + expect(obj.add(messageObj, type)).toEqual(true); expect(type).toEqual(returnedObj); }); }); describe('check methods: hasMessages, addErrorMessage, getErrorMessages', function () { + var errorMessageText = "Error message test"; + it('hasMessages method before adding messages', function () { expect(obj.hasMessages()).toEqual(false); }); it('check addErrorMessage method', function () { var messageObj = { - message: "Error message test" + message: errorMessageText }; expect(obj.addErrorMessage(messageObj)).toEqual(true); }); it('check getErrorMessage method', function () { - var errorMessages = ko.observableArray(["Error message test"]); - - expect(obj.getErrorMessages()()).toEqual(errorMessages()); + expect(obj.getErrorMessages()()).toEqual([errorMessageText]); }); it('hasMessages method after adding Error messages', function () { @@ -98,17 +99,18 @@ define([ }); describe('check methods: hasMessages, addSuccessMessage, getSuccessMessages', function () { + var successMessageText = "Success message test"; + it('check addSuccessMessage and getSuccessMessage', function () { var messageObj = { - message: "Success message test" + message: successMessageText }; expect(obj.addSuccessMessage(messageObj)).toEqual(true); }); it('check method getSuccessMessage', function () { - var successMessages = ko.observableArray(["Success message test"]); - expect(obj.getSuccessMessages()()).toEqual(successMessages()); + expect(obj.getSuccessMessages()()).toEqual([successMessageText]); }); it('hasMessages method after adding Success messages', function () { From 71ca4bb2bc4e490cc696849b5a943b186f5caa6b Mon Sep 17 00:00:00 2001 From: akartavtsev Date: Mon, 13 Jan 2020 15:54:41 +0200 Subject: [PATCH 5/8] changed double quotes to single --- .../Ui/frontend/js/model/messages.test.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js index eb1de977ffefb..d2efbe0bac040 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -39,10 +39,10 @@ define([ describe('add method', function () { it('simple message', function () { var messageObj = { - message: "Message test" + message: 'Message test' }, type = [], - returnedObj = ["Message test"]; + returnedObj = ['Message test']; expect(obj.add(messageObj, type)).toEqual(true); expect(type).toEqual(returnedObj); @@ -50,16 +50,16 @@ define([ it('message with parameters', function () { var messageObj = { - message: "Message test case %1, case %2 and case %3", + message: 'Message test case %1, case %2 and case %3', parameters: [ - "one", - "two", + 'one', + 'two', 'three' ] }, type = [], - returnedObj = ["Message test case " + messageObj.parameters[0] + ", case " + - messageObj.parameters[1] + " and case " + messageObj.parameters[2]]; + returnedObj = ['Message test case ' + messageObj.parameters[0] + ', case ' + + messageObj.parameters[1] + ' and case ' + messageObj.parameters[2]]; expect(obj.add(messageObj, type)).toEqual(true); expect(type).toEqual(returnedObj); @@ -67,7 +67,7 @@ define([ }); describe('check methods: hasMessages, addErrorMessage, getErrorMessages', function () { - var errorMessageText = "Error message test"; + var errorMessageText = 'Error message test'; it('hasMessages method before adding messages', function () { expect(obj.hasMessages()).toEqual(false); @@ -99,7 +99,7 @@ define([ }); describe('check methods: hasMessages, addSuccessMessage, getSuccessMessages', function () { - var successMessageText = "Success message test"; + var successMessageText = 'Success message test'; it('check addSuccessMessage and getSuccessMessage', function () { var messageObj = { From df48d3e69fc17c7b54ddf2e33840da3ca3af2460 Mon Sep 17 00:00:00 2001 From: Nazar Klovanych Date: Mon, 24 Feb 2020 15:33:25 +0200 Subject: [PATCH 6/8] refactore per review comment --- .../Ui/frontend/js/model/messages.test.js | 181 ++++++++---------- 1 file changed, 81 insertions(+), 100 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js index d2efbe0bac040..e9dcebfe9018e 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -10,120 +10,101 @@ define([ 'use strict'; describe('Magento_Ui/js/model/messages', function () { - var obj = new Constr({ - provider: 'provName', - name: '', - index: '' - }); - - registry.set('provName', { - /** Stub */ - on: function () { - }, - /** Stub */ - get: function () { - }, - - /** Stub */ - set: function () { - } - }); - - describe('initialize method', function () { - it('check for existing', function () { - expect(obj).toBeDefined(); + var obj, + errorMessageText, + successMessageText, + messageObj; + + beforeEach(function () { + obj = new Constr( + { + provider: 'provName', + name: '', + index: '' + }); + errorMessageText = 'Error message test'; + successMessageText = 'Success message test'; + + registry.set('provName', { + /** Stub */ + on: function () { + }, + + /** Stub */ + get: function () { + }, + + /** Stub */ + set: function () { + } }); }); - describe('add method', function () { - it('simple message', function () { - var messageObj = { - message: 'Message test' - }, - type = [], - returnedObj = ['Message test']; - - expect(obj.add(messageObj, type)).toEqual(true); - expect(type).toEqual(returnedObj); - }); - - it('message with parameters', function () { - var messageObj = { - message: 'Message test case %1, case %2 and case %3', - parameters: [ - 'one', - 'two', - 'three' - ] - }, - type = [], - returnedObj = ['Message test case ' + messageObj.parameters[0] + ', case ' + - messageObj.parameters[1] + ' and case ' + messageObj.parameters[2]]; - - expect(obj.add(messageObj, type)).toEqual(true); - expect(type).toEqual(returnedObj); - }); - }); - - describe('check methods: hasMessages, addErrorMessage, getErrorMessages', function () { - var errorMessageText = 'Error message test'; - - it('hasMessages method before adding messages', function () { - expect(obj.hasMessages()).toEqual(false); - }); - - it('check addErrorMessage method', function () { - var messageObj = { - message: errorMessageText - }; - - expect(obj.addErrorMessage(messageObj)).toEqual(true); - }); + it('simple message', function () { + var messageObj = + { + message: 'Message test' + }, + type = []; - it('check getErrorMessage method', function () { - expect(obj.getErrorMessages()()).toEqual([errorMessageText]); - }); - - it('hasMessages method after adding Error messages', function () { - expect(obj.hasMessages()).toEqual(true); - }); + expect(obj.add(messageObj, type)).toEqual(true); + expect(type).toEqual([messageObj.message]); }); - describe('check clean method for Error messages', function () { - it('check for cleaning messages', function () { - obj.clear(); - expect(obj.getErrorMessages()()).toEqual([]); - expect(obj.hasMessages()).toEqual(false); - }); + it('message with parameters', function () { + var returnedObj, + type = []; + + messageObj = { + message: 'Message test case %1, case %2 and case %3', + parameters: [ + 'one', + 'two', + 'three' + ] + }; + returnedObj = ['Message test case ' + messageObj.parameters[0] + ', case ' + + messageObj.parameters[1] + ' and case ' + messageObj.parameters[2]]; + + expect(obj.add(messageObj, type)).toEqual(true); + expect(type).toEqual(returnedObj); }); - describe('check methods: hasMessages, addSuccessMessage, getSuccessMessages', function () { - var successMessageText = 'Success message test'; + it('check addErrorMessage && getErrorMessage && hasMessages', function () { + messageObj = { + message: errorMessageText + }; - it('check addSuccessMessage and getSuccessMessage', function () { - var messageObj = { - message: successMessageText - }; - - expect(obj.addSuccessMessage(messageObj)).toEqual(true); - }); + expect(obj.hasMessages()).toEqual(false); + expect(obj.addErrorMessage(messageObj)).toEqual(true); + expect(obj.getErrorMessages()()).toEqual([errorMessageText]); + expect(obj.hasMessages()).toEqual(true); + }); - it('check method getSuccessMessage', function () { - expect(obj.getSuccessMessages()()).toEqual([successMessageText]); - }); + it('check addSuccessMessage && getSuccessMessage && hasMessages', function () { + messageObj = { + message: successMessageText + }; - it('hasMessages method after adding Success messages', function () { - expect(obj.hasMessages()).toEqual(true); - }); + expect(obj.addSuccessMessage(messageObj)).toEqual(true); + expect(obj.getSuccessMessages()()).toEqual([successMessageText]); + expect(obj.hasMessages()).toEqual(true); }); - describe('check clean method for Success messages', function () { - it('check for cleaning messages', function () { - obj.clear(); - expect(obj.getSuccessMessages()()).toEqual([]); - expect(obj.hasMessages()).toEqual(false); - }); + it('check for cleaning messages', function () { + messageObj = { + message: 'Message test case %1, case %2 and case %3', + parameters: [ + 'one', + 'two', + 'three' + ] + }; + expect(obj.addErrorMessage(messageObj)).toEqual(true); + obj.clear(); + expect(obj.getErrorMessages()()).toEqual([]); + expect(obj.hasMessages()).toEqual(false); }); }); }); From 9ccac04ff5908efd749c42187bc2ab79798f0d6f Mon Sep 17 00:00:00 2001 From: Nazar Klovanych Date: Mon, 24 Feb 2020 15:37:36 +0200 Subject: [PATCH 7/8] static test fix --- .../code/Magento/Ui/frontend/js/model/messages.test.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js index e9dcebfe9018e..b0a8f952806a4 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -42,12 +42,11 @@ define([ }); it('simple message', function () { - var messageObj = - { - message: 'Message test' - }, - type = []; + var type = []; + messageObj = { + message: 'Message test' + }; expect(obj.add(messageObj, type)).toEqual(true); expect(type).toEqual([messageObj.message]); }); From ce191710acfaaf8457d2bb66c192d8d3bb984844 Mon Sep 17 00:00:00 2001 From: Nazar Klovanych Date: Tue, 25 Feb 2020 10:37:15 +0200 Subject: [PATCH 8/8] added more clear tests names --- .../code/Magento/Ui/frontend/js/model/messages.test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js index b0a8f952806a4..54134c5b3166c 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/frontend/js/model/messages.test.js @@ -41,7 +41,7 @@ define([ }); }); - it('simple message', function () { + it('adds massage without parameters', function () { var type = []; messageObj = { @@ -51,7 +51,7 @@ define([ expect(type).toEqual([messageObj.message]); }); - it('message with parameters', function () { + it('add message with parameters', function () { var returnedObj, type = []; @@ -70,7 +70,7 @@ define([ expect(type).toEqual(returnedObj); }); - it('check addErrorMessage && getErrorMessage && hasMessages', function () { + it('add error message, get error message, verify has error message', function () { messageObj = { message: errorMessageText }; @@ -81,7 +81,7 @@ define([ expect(obj.hasMessages()).toEqual(true); }); - it('check addSuccessMessage && getSuccessMessage && hasMessages', function () { + it('add success message, get success message, verify has success message', function () { messageObj = { message: successMessageText }; @@ -91,7 +91,7 @@ define([ expect(obj.hasMessages()).toEqual(true); }); - it('check for cleaning messages', function () { + it('cleaning messages', function () { messageObj = { message: 'Message test case %1, case %2 and case %3', parameters: [