Skip to content

Commit b8f69cb

Browse files
committed
MAGETWO-69213: [Backport] - Braintree saved credit card error for reorder between $2001-$3000 does not display error to customer - for 2.1
1 parent a91df24 commit b8f69cb

File tree

3 files changed

+102
-1
lines changed
  • app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer
  • dev/tests/js/jasmine/tests/app/code/Magento/Braintree/frontend/js/view/payment/method-renderer

3 files changed

+102
-1
lines changed

app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/cc-form.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ define(
3636
braintreeDeviceData: null,
3737
paymentMethodNonce: null,
3838
lastBillingAddress: null,
39+
ccCode: null,
40+
ccMessageContainer: null,
3941
validatorManager: validatorManager,
4042
code: 'braintree',
4143

@@ -138,9 +140,39 @@ define(
138140
return;
139141
}
140142

143+
this.restoreMessageContainer();
144+
this.restoreCode();
145+
146+
/**
147+
* Define onReady callback
148+
*/
149+
braintree.onReady = function () {};
141150
this.initBraintree();
142151
},
143152

153+
/**
154+
* Restore original message container for cc-form component
155+
*/
156+
restoreMessageContainer: function () {
157+
this.messageContainer = this.ccMessageContainer;
158+
},
159+
160+
/**
161+
* Restore original code for cc-form component
162+
*/
163+
restoreCode: function () {
164+
this.code = this.ccCode;
165+
},
166+
167+
/** @inheritdoc */
168+
initChildren: function () {
169+
this._super();
170+
this.ccMessageContainer = this.messageContainer;
171+
this.ccCode = this.code;
172+
173+
return this;
174+
},
175+
144176
/**
145177
* Init config
146178
*/

app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/vault.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ define([
5252
var self = this;
5353

5454
/**
55-
* Define already callback
55+
* Define onReady callback
5656
*/
5757
Braintree.onReady = function () {
5858
self.getPaymentMethodNonce();
@@ -78,6 +78,7 @@ define([
7878
formComponent.setPaymentMethodNonce(response.paymentMethodNonce);
7979
formComponent.additionalData['public_hash'] = self.publicHash;
8080
formComponent.code = self.code;
81+
formComponent.messageContainer = self.messageContainer;
8182
formComponent.placeOrder();
8283
});
8384
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/**
2+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
/* eslint-disable max-nested-callbacks */
7+
define([
8+
'jquery',
9+
'squire',
10+
'ko',
11+
'Magento_Ui/js/model/messages'
12+
], function ($, Squire, ko, Messages) {
13+
'use strict';
14+
15+
describe('Magento_Braintree/js/view/payment/method-renderer/cc-form', function () {
16+
var injector = new Squire(),
17+
mocks = {
18+
'Magento_Checkout/js/model/quote': {
19+
billingAddress: ko.observable(),
20+
shippingAddress: ko.observable(),
21+
paymentMethod: ko.observable()
22+
},
23+
'Magento_Braintree/js/view/payment/validator-handler': jasmine.createSpyObj(
24+
'validator-handler',
25+
['initialize']
26+
),
27+
'Magento_Braintree/js/view/payment/adapter': jasmine.createSpyObj(
28+
'adapter',
29+
['setup', 'setConfig']
30+
)
31+
},
32+
braintreeCcForm;
33+
34+
beforeAll(function (done) {
35+
window.checkoutConfig = {
36+
quoteData: {},
37+
payment: {
38+
braintree: {
39+
hasFraudProtection: true
40+
}
41+
}
42+
};
43+
injector.mock(mocks);
44+
injector.require(['Magento_Braintree/js/view/payment/method-renderer/cc-form'], function (Constr) {
45+
braintreeCcForm = new Constr({
46+
provider: 'provName',
47+
name: 'test',
48+
index: 'test'
49+
});
50+
51+
done();
52+
});
53+
});
54+
55+
it('Check if payment code and message container are restored after onActiveChange call.', function () {
56+
var expectedMessageContainer = braintreeCcForm.messageContainer,
57+
expectedCode = braintreeCcForm.code;
58+
59+
braintreeCcForm.code = 'braintree-vault';
60+
braintreeCcForm.messageContainer = new Messages();
61+
62+
braintreeCcForm.onActiveChange(true);
63+
64+
expect(braintreeCcForm.getCode()).toEqual(expectedCode);
65+
expect(braintreeCcForm.messageContainer).toEqual(expectedMessageContainer);
66+
});
67+
});
68+
});

0 commit comments

Comments
 (0)