Skip to content

Commit 1112cab

Browse files
committed
Merge branch 'ACP2E-1215' of https://github.com/magento-l3/magento2ce into PR-06022023
2 parents 375f889 + dbdaf56 commit 1112cab

File tree

6 files changed

+113
-172
lines changed

6 files changed

+113
-172
lines changed

app/code/Magento/Payment/Test/Unit/Plugin/PaymentMethodProcessTest.php

Lines changed: 0 additions & 142 deletions
This file was deleted.

app/code/Magento/Payment/composer.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
"magento/module-quote": "*",
1414
"magento/module-sales": "*",
1515
"magento/module-store": "*",
16-
"magento/module-ui": "*",
17-
"magento/module-vault": "*"
16+
"magento/module-ui": "*"
1817
},
1918
"type": "magento2-module",
2019
"license": [

app/code/Magento/Payment/etc/di.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,4 @@
8181
<argument name="logger" xsi:type="object">Magento\Payment\Model\Method\VirtualLogger</argument>
8282
</arguments>
8383
</type>
84-
<type name="Magento\Payment\Block\Form\Container">
85-
<plugin name="PaymentMethodProcess" type="Magento\Payment\Plugin\PaymentMethodProcess"/>
86-
</type>
87-
<type name="Magento\Payment\Plugin\PaymentMethodProcess">
88-
<arguments>
89-
<argument name="braintreeCCVault" xsi:type="string">braintree_cc_vault</argument>
90-
</arguments>
91-
</type>
9284
</config>

app/code/Magento/Payment/Plugin/PaymentMethodProcess.php renamed to app/code/Magento/Vault/Plugin/PaymentMethodProcess.php

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,26 @@
55
*/
66
declare(strict_types=1);
77

8-
namespace Magento\Payment\Plugin;
8+
namespace Magento\Vault\Plugin;
99

10-
use Magento\Framework\App\ObjectManager;
1110
use Magento\Payment\Block\Form\Container;
1211
use Magento\Vault\Model\Ui\Adminhtml\TokensConfigProvider;
12+
use Magento\Vault\Model\VaultPaymentInterface;
1313

14-
/**
15-
* @SuppressWarnings(PHPMD)
16-
*/
1714
class PaymentMethodProcess
1815
{
19-
/**
20-
* @var string
21-
*/
22-
private string $braintreeCCVault;
23-
2416
/**
2517
* @var TokensConfigProvider
2618
*/
2719
private TokensConfigProvider $tokensConfigProvider;
2820

2921
/**
30-
* @param string $braintreeCCVault
31-
* @param TokensConfigProvider|null $tokensConfigProvider
22+
* @param TokensConfigProvider $tokensConfigProvider
3223
*/
3324
public function __construct(
34-
string $braintreeCCVault = '',
35-
TokensConfigProvider $tokensConfigProvider = null
25+
TokensConfigProvider $tokensConfigProvider
3626
) {
37-
$this->braintreeCCVault = $braintreeCCVault;
38-
$this->tokensConfigProvider = $tokensConfigProvider ??
39-
ObjectManager::getInstance()->get(TokensConfigProvider::class);
27+
$this->tokensConfigProvider = $tokensConfigProvider;
4028
}
4129

4230
/**
@@ -51,9 +39,8 @@ public function afterGetMethods(Container $container, array $results): array
5139
{
5240
$methods = [];
5341
foreach ($results as $result) {
54-
if ($result->getCode() === $this->braintreeCCVault
55-
&& empty($this->tokensConfigProvider->getTokensComponents($result->getCode()))) {
56-
42+
if ($result instanceof VaultPaymentInterface &&
43+
empty($this->tokensConfigProvider->getTokensComponents($result->getCode()))) {
5744
continue;
5845
}
5946
$methods[] = $result;
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Vault\Test\Unit\Plugin;
9+
10+
use Magento\Payment\Api\Data\PaymentMethodInterface;
11+
use Magento\Payment\Block\Form\Container;
12+
use Magento\Vault\Model\VaultPaymentInterface;
13+
use Magento\Vault\Plugin\PaymentMethodProcess;
14+
use Magento\Vault\Model\Ui\Adminhtml\TokensConfigProvider;
15+
use Magento\Vault\Model\Ui\TokenUiComponentInterface;
16+
use PHPUnit\Framework\MockObject\MockObject;
17+
use PHPUnit\Framework\TestCase;
18+
19+
class PaymentMethodProcessTest extends TestCase
20+
{
21+
/**
22+
* @const string
23+
*/
24+
public const PAYMENT_METHOD_CHECKMO = 'checkmo';
25+
26+
/**
27+
* @const string
28+
*/
29+
public const PAYMENT_METHOD_PAYFLOWPRO_CC_VAULT = 'payflowpro_cc_vault';
30+
31+
/**
32+
* @var TokensConfigProvider|MockObject
33+
*/
34+
private TokensConfigProvider $tokensConfigProviderMock;
35+
36+
/**
37+
* @var PaymentMethodProcess
38+
*/
39+
private $subject;
40+
41+
/**
42+
* @inheritdoc
43+
*/
44+
protected function setUp(): void
45+
{
46+
$this->tokensConfigProviderMock = $this->getMockBuilder(TokensConfigProvider::class)
47+
->disableOriginalConstructor()
48+
->getMock();
49+
50+
$this->subject = new PaymentMethodProcess($this->tokensConfigProviderMock);
51+
}
52+
53+
/**
54+
* Test retrieve available payment methods
55+
*
56+
* @param TokenUiComponentInterface|null $tokenInterface
57+
* @param int $availableMethodsCount
58+
* @dataProvider afterGetMethodsDataProvider
59+
*/
60+
public function testAfterGetMethods($tokenInterface, $availableMethodsCount)
61+
{
62+
$checkmoPaymentMethod = $this->getMockBuilder(PaymentMethodInterface::class)
63+
->disableOriginalConstructor()
64+
->setMethods(['getCode'])
65+
->getMockForAbstractClass();
66+
$checkmoPaymentMethod->expects($this->any())->method('getCode')
67+
->willReturn(self::PAYMENT_METHOD_CHECKMO);
68+
69+
$payflowCCVaultTPaymentMethod = $this->getMockBuilder(VaultPaymentInterface::class)
70+
->disableOriginalConstructor()
71+
->setMethods(['getCode'])
72+
->getMockForAbstractClass();
73+
$payflowCCVaultTPaymentMethod->expects($this->any())->method('getCode')
74+
->willReturn(self::PAYMENT_METHOD_PAYFLOWPRO_CC_VAULT);
75+
$methods = [$checkmoPaymentMethod, $payflowCCVaultTPaymentMethod];
76+
$containerMock = $this->getMockBuilder(Container::class)
77+
->disableOriginalConstructor()
78+
->getMock();
79+
80+
$this->tokensConfigProviderMock->method('getTokensComponents')
81+
->with(self::PAYMENT_METHOD_PAYFLOWPRO_CC_VAULT)
82+
->willReturn($tokenInterface);
83+
84+
$result = $this->subject->afterGetMethods($containerMock, $methods);
85+
$this->assertEquals($availableMethodsCount, count($result));
86+
}
87+
88+
/**
89+
* Data Provider
90+
*/
91+
public function afterGetMethodsDataProvider()
92+
{
93+
$tokenUiComponentInterface = $this->getMockBuilder(TokenUiComponentInterface::class)
94+
->disableOriginalConstructor()
95+
->getMock();
96+
97+
return [
98+
[null, 1],
99+
[$tokenUiComponentInterface, 2],
100+
];
101+
}
102+
}

app/code/Magento/Vault/etc/di.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,7 @@
5757
<plugin name="ProcessPaymentVaultInformationManagement"
5858
type="Magento\Vault\Plugin\PaymentVaultInformationManagement"/>
5959
</type>
60+
<type name="Magento\Payment\Block\Form\Container">
61+
<plugin name="PaymentMethodProcess" type="Magento\Vault\Plugin\PaymentMethodProcess"/>
62+
</type>
6063
</config>

0 commit comments

Comments
 (0)