CurrencyDisplayOptionsTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CurrencySymbol\Test\Unit\Observer;
  7. use Magento\CurrencySymbol\Model\System\CurrencysymbolFactory;
  8. /**
  9. * Test for \Magento\CurrencySymbol\Observer\CurrencyDisplayOptions
  10. */
  11. class CurrencyDisplayOptionsTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\CurrencySymbol\Observer\CurrencyDisplayOptions
  15. */
  16. private $observer;
  17. /**
  18. * @var \PHPUnit_Framework_MockObject_MockObject|CurrencysymbolFactory $mockSymbolFactory
  19. */
  20. private $mockSymbolFactory;
  21. /**
  22. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\CurrencySymbol\Model\System\Currencysymbol $mockSymbol
  23. */
  24. private $mockSymbol;
  25. /**
  26. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Event\Observer $mockEvent
  27. */
  28. private $mockEventObserver;
  29. /**
  30. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Event $mockEvent
  31. */
  32. private $mockEvent;
  33. protected function setUp()
  34. {
  35. $this->mockSymbolFactory = $this->createPartialMock(
  36. \Magento\CurrencySymbol\Model\System\CurrencysymbolFactory::class,
  37. ['create']
  38. );
  39. $this->mockSymbol = $this->createPartialMock(
  40. \Magento\CurrencySymbol\Model\System\Currencysymbol::class,
  41. ['getCurrencySymbol']
  42. );
  43. $this->mockEventObserver = $this->createPartialMock(\Magento\Framework\Event\Observer::class, ['getEvent']);
  44. $this->mockEvent = $this->createPartialMock(
  45. \Magento\Framework\Event::class,
  46. ['getBaseCode', 'getCurrencyOptions']
  47. );
  48. $this->mockEventObserver->expects($this->any())->method('getEvent')->willReturn($this->mockEvent);
  49. $this->mockSymbolFactory->expects($this->any())->method('create')->willReturn($this->mockSymbol);
  50. $this->observer = new \Magento\CurrencySymbol\Observer\CurrencyDisplayOptions($this->mockSymbolFactory);
  51. }
  52. public function testCurrencyDisplayOptionsEmpty()
  53. {
  54. $baseData = [
  55. \Magento\Framework\Locale\Currency::CURRENCY_OPTION_NAME => 'US Dollar'
  56. ];
  57. $sampleCurrencyOptionObject = new \Magento\Framework\DataObject($baseData);
  58. //Return invalid value
  59. $this->mockEvent->expects($this->once())->method('getBaseCode')->willReturn(null);
  60. $this->mockEvent->expects($this->once())->method('getCurrencyOptions')->willReturn($sampleCurrencyOptionObject);
  61. $this->mockSymbol->expects($this->never())->method('getCurrencySymbol')->with(null)->willReturn(null);
  62. $this->observer->execute($this->mockEventObserver);
  63. // Check if option set is empty
  64. $this->assertEquals($baseData, $sampleCurrencyOptionObject->getData());
  65. }
  66. public function testCurrencyDisplayOptions()
  67. {
  68. $baseData = [
  69. \Magento\Framework\Locale\Currency::CURRENCY_OPTION_NAME => 'US Dollar'
  70. ];
  71. $sampleCurrencyOptionObject = new \Magento\Framework\DataObject($baseData);
  72. $sampleCurrency = 'USD';
  73. $sampleCurrencySymbol = '$';
  74. $expectedCurrencyOptions = array_merge(
  75. $baseData,
  76. [
  77. \Magento\Framework\Locale\Currency::CURRENCY_OPTION_NAME => 'US Dollar',
  78. \Magento\Framework\Locale\Currency::CURRENCY_OPTION_SYMBOL => $sampleCurrencySymbol,
  79. \Magento\Framework\Locale\Currency::CURRENCY_OPTION_DISPLAY => \Magento\Framework\Currency::USE_SYMBOL
  80. ]
  81. );
  82. $this->mockEvent->expects($this->once())->method('getBaseCode')->willReturn($sampleCurrency);
  83. $this->mockEvent->expects($this->once())->method('getCurrencyOptions')->willReturn($sampleCurrencyOptionObject);
  84. $this->mockSymbol->expects($this->once())
  85. ->method('getCurrencySymbol')
  86. ->with($sampleCurrency)
  87. ->willReturn($sampleCurrencySymbol);
  88. $this->observer->execute($this->mockEventObserver);
  89. $this->assertEquals($expectedCurrencyOptions, $sampleCurrencyOptionObject->getData());
  90. }
  91. }