VariablesTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Variable\Test\Unit\Model\Source;
  7. /**
  8. * Unit test for Magento\Variable\Model\Source\Variables
  9. */
  10. class VariablesTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * Variables model
  14. *
  15. * @var \Magento\Variable\Model\Source\Variables
  16. */
  17. protected $model;
  18. /**
  19. * Config variables
  20. *
  21. * @var array
  22. */
  23. protected $configVariables;
  24. /**
  25. * @var \Magento\Config\Model\Config\Structure\SearchInterface|\PHPUnit_Framework_MockObject_MockObject
  26. */
  27. private $configMock;
  28. protected function setup()
  29. {
  30. $this->configMock = $this->getMockBuilder(\Magento\Config\Model\Config\Structure\SearchInterface::class)
  31. ->setMethods(['getElementByConfigPath'])
  32. ->disableOriginalConstructor()
  33. ->getMockForAbstractClass();
  34. $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  35. $this->configVariables = [
  36. 'web' => [
  37. 'web/unsecure/base_url' => '1',
  38. 'web/secure/base_url' => '1'
  39. ]
  40. ];
  41. $element1 = $this->getMockBuilder(\Magento\Config\Model\Config\StructureElementInterface::class)
  42. ->disableOriginalConstructor()
  43. ->setMethods(['getLabel'])
  44. ->getMockForAbstractClass();
  45. $element2 = clone $element1;
  46. $groupElement = clone $element1;
  47. $element1->expects($this->once())->method('getLabel')->willReturn(__('Base URL'));
  48. $element2->expects($this->once())->method('getLabel')->willReturn(__('Secure Base URL'));
  49. $groupElement->expects($this->once())->method('getLabel')->willReturn(__('Web'));
  50. $this->configMock->expects($this->any())->method('getElementByConfigPath')->willReturnMap([
  51. ['web', $groupElement],
  52. ['web/unsecure/base_url', $element1],
  53. ['web/secure/base_url', $element2]
  54. ]);
  55. $this->model = $helper->getObject(\Magento\Variable\Model\Source\Variables::class, [
  56. 'configStructure' => $this->configMock,
  57. 'configPaths' => $this->configVariables
  58. ]);
  59. }
  60. public function testToOptionArrayWithoutGroup()
  61. {
  62. $optionArray = $this->model->toOptionArray();
  63. $this->assertEquals(count($this->configVariables['web']), count($optionArray));
  64. $expectedResults = $this->getExpectedOptionsResults();
  65. $index = 0;
  66. foreach ($optionArray as $variable) {
  67. $this->assertEquals($expectedResults[$index]['value'], $variable['value']);
  68. $this->assertEquals($expectedResults[$index]['label_text'], $variable['label']->getText());
  69. $index++;
  70. }
  71. }
  72. public function testToOptionArrayWithGroup()
  73. {
  74. $optionArray = $this->model->toOptionArray(true);
  75. $this->assertEquals('Web', $optionArray[0]['label']);
  76. $optionArrayValues = $optionArray[0]['value'];
  77. $this->assertEquals(count($this->configVariables['web']), count($optionArrayValues));
  78. $expectedResults = $this->getExpectedOptionsResults();
  79. $index = 0;
  80. foreach ($optionArray[0]['value'] as $variable) {
  81. $this->assertEquals($expectedResults[$index]['value'], $variable['value']);
  82. $this->assertEquals($expectedResults[$index]['label_text'], $variable['label']->getText());
  83. $index++;
  84. }
  85. }
  86. /**
  87. * Get expected results for options array
  88. */
  89. private function getExpectedOptionsResults()
  90. {
  91. return [
  92. [
  93. 'value' => '{{config path="web/unsecure/base_url"}}',
  94. 'label_text' => 'Base URL'
  95. ],
  96. [
  97. 'value' => '{{config path="web/secure/base_url"}}',
  98. 'label_text' => 'Secure Base URL'
  99. ],
  100. ];
  101. }
  102. }