RendererTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Store\Test\Unit\Model\Address;
  7. use Magento\Framework\DataObject;
  8. use Magento\Store\Model\Address\Renderer;
  9. class RendererTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var Renderer
  13. */
  14. protected $model;
  15. /**
  16. * Init mocks for tests
  17. *
  18. * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  19. */
  20. protected function setUp()
  21. {
  22. $eventManager = $this->getMockBuilder(\Magento\Framework\Event\ManagerInterface::class)
  23. ->disableOriginalConstructor()
  24. ->setMethods(['dispatch'])
  25. ->getMock();
  26. $eventManager->expects($this->once())->method('dispatch')->with('store_address_format');
  27. $filterManager = $this->getMockBuilder(\Magento\Framework\Filter\FilterManager::class)
  28. ->disableOriginalConstructor()
  29. ->setMethods(['template'])
  30. ->getMock();
  31. $filterManager->expects($this->once())
  32. ->method('template')
  33. ->willReturnCallback(function ($format, $data) {
  34. return implode("\n", $data['variables']);
  35. });
  36. $this->model = new Renderer($eventManager, $filterManager);
  37. }
  38. /**
  39. * @param DataObject $storeInfo
  40. * @param $type
  41. * @dataProvider formatDataProvider
  42. */
  43. public function testFormat(DataObject $storeInfo, $type)
  44. {
  45. $expected = implode("\n", $storeInfo->getData());
  46. if ($type === 'html') {
  47. $expected = nl2br($expected);
  48. }
  49. $result = $this->model->format($storeInfo, $type);
  50. $this->assertEquals($expected, $result);
  51. }
  52. /**
  53. * @return array
  54. */
  55. public function formatDataProvider()
  56. {
  57. $storeInfo = new DataObject([
  58. 'region' => 'Gondolin',
  59. 'country' => 'Beleriand',
  60. ]);
  61. return [
  62. [$storeInfo, 'html'],
  63. [$storeInfo, 'text'],
  64. ];
  65. }
  66. }