Skip to content

Commit e3880ef

Browse files
committed
Merge remote-tracking branch 'trigger/MAGETWO-95501' into BugFixPR
2 parents d601441 + 1d65e12 commit e3880ef

File tree

2 files changed

+80
-3
lines changed

2 files changed

+80
-3
lines changed

app/code/Magento/Checkout/view/frontend/web/js/model/error-processor.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
*/
99
define([
1010
'mage/url',
11-
'Magento_Ui/js/model/messageList'
12-
], function (url, globalMessageList) {
11+
'Magento_Ui/js/model/messageList',
12+
'mage/translate'
13+
], function (url, globalMessageList, $t) {
1314
'use strict';
1415

1516
return {
@@ -25,7 +26,11 @@ define([
2526
if (response.status == 401) { //eslint-disable-line eqeqeq
2627
window.location.replace(url.build('customer/account/login/'));
2728
} else {
28-
error = JSON.parse(response.responseText);
29+
try {
30+
error = JSON.parse(response.responseText);
31+
} catch (exception) {
32+
error = $t('Something went wrong with your request. Please try again later.');
33+
}
2934
messageContainer.addErrorMessage(error);
3035
}
3136
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
/*eslint max-nested-callbacks: 0*/
7+
define([
8+
'squire'
9+
], function (Squire) {
10+
'use strict';
11+
12+
describe('Magento_Checkout/js/model/error-processor', function () {
13+
var injector = new Squire(),
14+
mocks = {
15+
'mage/url': {
16+
/** Method stub. */
17+
build: jasmine.createSpy()
18+
},
19+
'Magento_Ui/js/model/messageList': jasmine.createSpy('globalList')
20+
},
21+
model;
22+
23+
beforeEach(function (done) {
24+
injector.mock(mocks);
25+
injector.require([
26+
'Magento_Checkout/js/model/error-processor'
27+
], function (processor) {
28+
model = processor;
29+
30+
done();
31+
});
32+
});
33+
34+
describe('Check process method', function () {
35+
it('check on success response with valid response data', function () {
36+
var messageObject = {
37+
message: 'Valid error message!'
38+
},
39+
messageContainer = jasmine.createSpyObj('globalMessageList', ['addErrorMessage']);
40+
41+
model.process({
42+
status: 200,
43+
responseText: JSON.stringify(messageObject)
44+
}, messageContainer);
45+
expect(messageContainer.addErrorMessage).toHaveBeenCalledWith(messageObject);
46+
});
47+
48+
it('check on success response with invalid response data', function () {
49+
var messageContainer = jasmine.createSpyObj('globalMessageList', ['addErrorMessage']);
50+
51+
model.process({
52+
status: 200,
53+
responseText: ''
54+
}, messageContainer);
55+
expect(messageContainer.addErrorMessage)
56+
.toHaveBeenCalledWith('Something went wrong with your request. Please try again later.');
57+
});
58+
59+
it('check on failed status', function () {
60+
var messageContainer = jasmine.createSpyObj('globalMessageList', ['addErrorMessage']);
61+
62+
spyOn(window.location, 'replace').and.callFake(function () {});
63+
model.process({
64+
status: 401,
65+
responseText: ''
66+
}, messageContainer);
67+
expect(mocks['mage/url'].build)
68+
.toHaveBeenCalled();
69+
});
70+
});
71+
});
72+
});

0 commit comments

Comments
 (0)