1
1
<?php
2
2
/**
3
- * Copyright © Magento, Inc. All rights reserved.
4
- * See COPYING.txt for license details .
3
+ * Copyright 2014 Adobe
4
+ * All Rights Reserved .
5
5
*/
6
6
declare (strict_types=1 );
7
7
8
8
namespace Magento \Backend \Test \Unit \Block \Widget \Grid \Column \Renderer ;
9
9
10
- use Magento \Backend \Block \Widget \Grid \Column ;
11
- use Magento \Backend \Block \Widget \Grid \Column \Renderer \Currency ;
12
10
use Magento \Directory \Model \Currency \DefaultLocator ;
13
- use Magento \Directory \Model \CurrencyFactory ;
14
11
use Magento \Framework \App \RequestInterface ;
15
- use Magento \Framework \Currency \Data \Currency as CurrencyData ;
12
+ use Magento \Directory \Model \CurrencyFactory ;
13
+ use Magento \Backend \Block \Widget \Grid \Column ;
16
14
use Magento \Framework \DataObject ;
17
- use Magento \Framework \Locale \CurrencyInterface ;
18
15
use Magento \Framework \TestFramework \Unit \Helper \ObjectManager ;
16
+ use Magento \Backend \Block \Widget \Grid \Column \Renderer \Currency ;
17
+ use Magento \Framework \Locale \Currency as LocaleCurrency ;
18
+ use Magento \Directory \Model \Currency as CurrencyData ;
19
+ use Magento \Store \Model \Store ;
19
20
use Magento \Store \Model \StoreManagerInterface ;
20
21
use PHPUnit \Framework \MockObject \MockObject ;
21
22
use PHPUnit \Framework \TestCase ;
@@ -28,114 +29,128 @@ class CurrencyTest extends TestCase
28
29
/**
29
30
* @var Currency
30
31
*/
31
- protected $ _blockCurrency ;
32
+ private $ currencyRenderer ;
32
33
33
34
/**
34
- * @var MockObject
35
+ * @var ObjectManager
35
36
*/
36
- protected $ _localeMock ;
37
+ private $ objectManager ;
37
38
38
39
/**
39
- * @var MockObject
40
+ * @var Store| MockObject
40
41
*/
41
- protected $ _curLocatorMock ;
42
+ private $ storeManagerMock ;
42
43
43
44
/**
44
- * @var MockObject
45
+ * @var DefaultLocator| MockObject
45
46
*/
46
- protected $ _columnMock ;
47
+ private $ currencyLocatorMock ;
47
48
48
49
/**
49
- * @var MockObject
50
+ * @var CurrencyFactory| MockObject
50
51
*/
51
- protected $ _storeManagerMock ;
52
+ private $ currencyFactoryMock ;
52
53
53
54
/**
54
- * @var MockObject
55
+ * @var LocaleCurrency| MockObject
55
56
*/
56
- protected $ _requestMock ;
57
+ private $ localeCurrencyMock ;
57
58
58
59
/**
59
- * @var MockObject
60
+ * @var RequestInterface| MockObject
60
61
*/
61
- protected $ _currencyMock ;
62
+ private $ requestMock ;
62
63
63
64
/**
64
- * @var DataObject
65
+ * @var Column|MockObject
65
66
*/
66
- protected $ _row ;
67
+ private $ columnMock ;
67
68
68
69
protected function setUp (): void
69
70
{
70
- $ this ->_storeManagerMock = $ this ->getMockForAbstractClass (StoreManagerInterface::class);
71
- $ this ->_localeMock = $ this ->getMockForAbstractClass (CurrencyInterface::class);
72
- $ this ->_requestMock = $ this ->getMockForAbstractClass (RequestInterface::class);
73
-
74
- $ this ->_curLocatorMock = $ this ->createMock (DefaultLocator::class);
75
- $ this ->_columnMock = $ this ->getMockBuilder (Column::class)
76
- ->addMethods (['getIndex ' , 'getCurrency ' , 'getRateField ' ])
71
+ $ this ->objectManager = new ObjectManager ($ this );
72
+ $ this ->storeManagerMock = $ this ->createMock (StoreManagerInterface::class);
73
+ $ this ->currencyLocatorMock = $ this ->createMock (DefaultLocator::class);
74
+ $ this ->currencyFactoryMock = $ this ->createMock (CurrencyFactory::class);
75
+ $ this ->requestMock = $ this ->createMock (RequestInterface::class);
76
+ $ defaultCurrencyCode = 'USD ' ;
77
+ $ currencyMock = $ this ->createMock (CurrencyData::class);
78
+ $ this ->currencyFactoryMock ->method ('create ' )
79
+ ->willReturn ($ currencyMock );
80
+ $ currencyMock ->method ('load ' )
81
+ ->with ($ defaultCurrencyCode )
82
+ ->willReturnSelf ();
83
+ $ this ->currencyLocatorMock ->method ('getDefaultCurrency ' )
84
+ ->with ($ this ->requestMock )
85
+ ->willReturn ($ defaultCurrencyCode );
86
+ $ this ->columnMock = $ this ->getMockBuilder (Column::class)
87
+ ->addMethods (['getIndex ' , 'getShowNumberSign ' , 'getDefault ' ])
77
88
->disableOriginalConstructor ()
78
89
->getMock ();
79
- $ this ->_columnMock ->expects ($ this ->any ())->method ('getIndex ' )->willReturn ('columnIndex ' );
80
-
81
- $ this ->_currencyMock = $ this ->createMock (\Magento \Directory \Model \Currency::class);
82
- $ this ->_currencyMock ->expects ($ this ->any ())->method ('load ' )->willReturnSelf ();
83
- $ currencyFactoryMock = $ this ->createPartialMock (CurrencyFactory::class, ['create ' ]);
84
- $ currencyFactoryMock ->expects ($ this ->any ())->method ('create ' )->willReturn ($ this ->_currencyMock );
85
-
86
- $ this ->_row = new DataObject (['columnIndex ' => '10 ' ]);
87
-
88
- $ helper = new ObjectManager ($ this );
89
- $ this ->_blockCurrency = $ helper ->getObject (
90
+ $ this ->columnMock ->method ('getIndex ' )->willReturn ('value ' );
91
+ $ this ->columnMock ->method ('getShowNumberSign ' )->willReturn (false );
92
+ $ this ->columnMock ->method ('getDefault ' )->willReturn ('' );
93
+ $ this ->localeCurrencyMock = $ this ->getMockBuilder (LocaleCurrency::class)
94
+ ->onlyMethods (['getCurrency ' ])
95
+ ->addMethods (['toCurrency ' ])
96
+ ->disableOriginalConstructor ()
97
+ ->getMock ();
98
+ $ this ->currencyRenderer = $ this ->objectManager ->getObject (
90
99
Currency::class,
91
100
[
92
- 'storeManager ' => $ this ->_storeManagerMock ,
93
- 'localeCurrency ' => $ this ->_localeMock ,
94
- 'currencyLocator ' => $ this ->_curLocatorMock ,
95
- 'request ' => $ this ->_requestMock ,
96
- 'currencyFactory ' => $ currencyFactoryMock
101
+ 'storeManager ' => $ this ->storeManagerMock ,
102
+ 'localeCurrency ' => $ this ->localeCurrencyMock ,
103
+ 'currencyLocator ' => $ this ->currencyLocatorMock ,
104
+ 'request ' => $ this ->requestMock ,
105
+ 'currencyFactory ' => $ this -> currencyFactoryMock
97
106
]
98
107
);
99
-
100
- $ this ->_blockCurrency ->setColumn ($ this ->_columnMock );
101
108
}
102
109
103
- protected function tearDown (): void
110
+ public function testRenderWithDefaultCurrency ()
104
111
{
105
- unset($ this ->_localeMock );
106
- unset($ this ->_curLocatorMock );
107
- unset($ this ->_columnMock );
108
- unset($ this ->_row );
109
- unset($ this ->_storeManagerMock );
110
- unset($ this ->_requestMock );
111
- unset($ this ->_blockCurrency );
112
+ $ defaultCurrencyCode = 'USD ' ;
113
+ $ amount = 123.45 ;
114
+ $ formattedAmount = '$123.45 ' ;
115
+ $ row = new DataObject (['value ' => $ amount ]);
116
+ $ this ->currencyRenderer ->setColumn ($ this ->columnMock );
117
+ $ this ->localeCurrencyMock ->method ('getCurrency ' )
118
+ ->with ($ defaultCurrencyCode )
119
+ ->willReturn ($ this ->localeCurrencyMock );
120
+ $ this ->localeCurrencyMock ->method ('toCurrency ' )
121
+ ->with (sprintf ("%f " , $ amount ))
122
+ ->willReturn ($ formattedAmount );
123
+ $ result = $ this ->currencyRenderer ->render ($ row );
124
+ $ this ->assertEquals ($ formattedAmount , $ result );
112
125
}
113
126
114
- /**
115
- * @covers \Magento\Backend\Block\Widget\Grid\Column\Renderer\Currency::render
116
- */
117
- public function testRenderWithDefaultCurrency ()
127
+ public function testRenderWithNonDefaultCurrency ()
118
128
{
119
- $ this ->_currencyMock ->expects ($ this ->once ())
120
- ->method ('getRate ' )
121
- ->with ('defaultCurrency ' )
122
- ->willReturn (1.5 );
123
- $ this ->_curLocatorMock ->expects ($ this ->any ())
124
- ->method ('getDefaultCurrency ' )
125
- ->with ($ this ->_requestMock )
126
- ->willReturn ('defaultCurrency ' );
127
- $ currLocaleMock = $ this ->createMock (CurrencyData::class);
128
- $ currLocaleMock ->expects ($ this ->once ())
129
- ->method ('toCurrency ' )
130
- ->with (15.0000 )
131
- ->willReturn ('15USD ' );
132
- $ this ->_localeMock ->expects ($ this ->once ())
133
- ->method ('getCurrency ' )
134
- ->with ('defaultCurrency ' )
135
- ->willReturn ($ currLocaleMock );
136
- $ this ->_columnMock ->method ('getCurrency ' )->willReturn ('USD ' );
137
- $ this ->_columnMock ->method ('getRateField ' )->willReturn ('test_rate_field ' );
138
-
139
- $ this ->assertEquals ('15USD ' , $ this ->_blockCurrency ->render ($ this ->_row ));
129
+ $ nonDefaultCurrencyCode = 'EUR ' ;
130
+ $ amount = 123.45 ;
131
+ $ formattedAmount = '€123.45 ' ;
132
+ $ storeId = 2 ;
133
+ $ row = new DataObject ([
134
+ 'value ' => $ amount ,
135
+ 'store_id ' => $ storeId
136
+ ]);
137
+ $ this ->currencyRenderer ->setColumn ($ this ->columnMock );
138
+ $ storeMock = $ this ->getMockBuilder (Store::class)
139
+ ->onlyMethods (['getCurrentCurrencyCode ' ])
140
+ ->disableOriginalConstructor ()
141
+ ->getMock ();
142
+ $ this ->storeManagerMock ->method ('getStore ' )
143
+ ->with ($ storeId )
144
+ ->willReturn ($ storeMock );
145
+ $ storeMock ->method ('getCurrentCurrencyCode ' )
146
+ ->willReturn ($ nonDefaultCurrencyCode );
147
+ $ this ->localeCurrencyMock ->method ('getCurrency ' )
148
+ ->with ($ nonDefaultCurrencyCode )
149
+ ->willReturn ($ this ->localeCurrencyMock );
150
+ $ this ->localeCurrencyMock ->method ('toCurrency ' )
151
+ ->with (sprintf ("%f " , $ amount ))
152
+ ->willReturn ($ formattedAmount );
153
+ $ result = $ this ->currencyRenderer ->render ($ row );
154
+ $ this ->assertEquals ($ formattedAmount , $ result );
140
155
}
141
156
}
0 commit comments