11<?php
22/**
3- * Copyright © Magento, Inc. All rights reserved.
4- * See COPYING.txt for license details .
3+ * Copyright 2014 Adobe
4+ * All Rights Reserved .
55 */
66declare (strict_types=1 );
77
88namespace Magento \Backend \Test \Unit \Block \Widget \Grid \Column \Renderer ;
99
10- use Magento \Backend \Block \Widget \Grid \Column ;
11- use Magento \Backend \Block \Widget \Grid \Column \Renderer \Currency ;
1210use Magento \Directory \Model \Currency \DefaultLocator ;
13- use Magento \Directory \Model \CurrencyFactory ;
1411use 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 ;
1614use Magento \Framework \DataObject ;
17- use Magento \Framework \Locale \CurrencyInterface ;
1815use 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 ;
1920use Magento \Store \Model \StoreManagerInterface ;
2021use PHPUnit \Framework \MockObject \MockObject ;
2122use PHPUnit \Framework \TestCase ;
@@ -28,114 +29,128 @@ class CurrencyTest extends TestCase
2829 /**
2930 * @var Currency
3031 */
31- protected $ _blockCurrency ;
32+ private $ currencyRenderer ;
3233
3334 /**
34- * @var MockObject
35+ * @var ObjectManager
3536 */
36- protected $ _localeMock ;
37+ private $ objectManager ;
3738
3839 /**
39- * @var MockObject
40+ * @var Store| MockObject
4041 */
41- protected $ _curLocatorMock ;
42+ private $ storeManagerMock ;
4243
4344 /**
44- * @var MockObject
45+ * @var DefaultLocator| MockObject
4546 */
46- protected $ _columnMock ;
47+ private $ currencyLocatorMock ;
4748
4849 /**
49- * @var MockObject
50+ * @var CurrencyFactory| MockObject
5051 */
51- protected $ _storeManagerMock ;
52+ private $ currencyFactoryMock ;
5253
5354 /**
54- * @var MockObject
55+ * @var LocaleCurrency| MockObject
5556 */
56- protected $ _requestMock ;
57+ private $ localeCurrencyMock ;
5758
5859 /**
59- * @var MockObject
60+ * @var RequestInterface| MockObject
6061 */
61- protected $ _currencyMock ;
62+ private $ requestMock ;
6263
6364 /**
64- * @var DataObject
65+ * @var Column|MockObject
6566 */
66- protected $ _row ;
67+ private $ columnMock ;
6768
6869 protected function setUp (): void
6970 {
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 ' ])
7788 ->disableOriginalConstructor ()
7889 ->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 (
9099 Currency::class,
91100 [
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
97106 ]
98107 );
99-
100- $ this ->_blockCurrency ->setColumn ($ this ->_columnMock );
101108 }
102109
103- protected function tearDown (): void
110+ public function testRenderWithDefaultCurrency ()
104111 {
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 );
112125 }
113126
114- /**
115- * @covers \Magento\Backend\Block\Widget\Grid\Column\Renderer\Currency::render
116- */
117- public function testRenderWithDefaultCurrency ()
127+ public function testRenderWithNonDefaultCurrency ()
118128 {
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 );
140155 }
141156}
0 commit comments