1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Payment\Test\Unit\Model\Method;
/**
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class FreeTest extends \PHPUnit\Framework\TestCase
{
/** @var \Magento\Payment\Model\Method\Free */
protected $methodFree;
/** @var \PHPUnit_Framework_MockObject_MockObject */
protected $scopeConfig;
/** @var \PHPUnit_Framework_MockObject_MockObject */
protected $currencyPrice;
protected function setUp()
{
$paymentData = $this->createMock(\Magento\Payment\Helper\Data::class);
$this->scopeConfig = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
$this->currencyPrice = $this->getMockBuilder(\Magento\Framework\Pricing\PriceCurrencyInterface::class)
->getMock();
$context = $this->createPartialMock(\Magento\Framework\Model\Context::class, ['getEventDispatcher']);
$eventManagerMock = $this->createMock(\Magento\Framework\Event\ManagerInterface::class);
$context->expects($this->any())->method('getEventDispatcher')->willReturn($eventManagerMock);
$registry = $this->createMock(\Magento\Framework\Registry::class);
$extensionAttributesFactory = $this->createMock(\Magento\Framework\Api\ExtensionAttributesFactory::class);
$customAttributeFactory = $this->createMock(\Magento\Framework\Api\AttributeValueFactory::class);
$loggerMock = $this->getMockBuilder(\Magento\Payment\Model\Method\Logger::class)
->setConstructorArgs([$this->getMockForAbstractClass(\Psr\Log\LoggerInterface::class)])
->getMock();
$this->methodFree = new \Magento\Payment\Model\Method\Free(
$context,
$registry,
$extensionAttributesFactory,
$customAttributeFactory,
$paymentData,
$this->scopeConfig,
$loggerMock,
$this->currencyPrice
);
}
/**
* @param string $orderStatus
* @param string $paymentAction
* @param mixed $result
* @dataProvider getConfigPaymentActionProvider
*/
public function testGetConfigPaymentAction($orderStatus, $paymentAction, $result)
{
$this->scopeConfig->expects($this->at(0))
->method('getValue')
->will($this->returnValue($orderStatus));
if ($orderStatus != 'pending') {
$this->scopeConfig->expects($this->at(1))
->method('getValue')
->will($this->returnValue($paymentAction));
}
$this->assertEquals($result, $this->methodFree->getConfigPaymentAction());
}
/**
* @param float $grandTotal
* @param bool $isActive
* @param bool $notEmptyQuote
* @param bool $result
* @dataProvider getIsAvailableProvider
*/
public function testIsAvailable($grandTotal, $isActive, $notEmptyQuote, $result)
{
$quote = null;
if ($notEmptyQuote) {
$quote = $this->createMock(\Magento\Quote\Model\Quote::class);
$quote->expects($this->any())
->method('__call')
->with($this->equalTo('getGrandTotal'))
->will($this->returnValue($grandTotal));
}
$this->currencyPrice->expects($this->any())
->method('round')
->willReturnArgument(0);
$this->scopeConfig->expects($this->any())
->method('getValue')
->will($this->returnValue($isActive));
$this->assertEquals($result, $this->methodFree->isAvailable($quote));
}
/**
* @return array
*/
public function getIsAvailableProvider()
{
return [
[0, true, true, true],
[0.1, true, true, false],
[0, false, false, false],
[1, true, false, false],
[0, true, false, false]
];
}
/**
* @return array
*/
public function getConfigPaymentActionProvider()
{
return [
['pending', 'action', null],
['processing', 'payment_action', 'payment_action']
];
}
}