ConfigOptionsListTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Test\Unit\Setup;
  7. use Magento\Backend\Setup\ConfigOptionsList;
  8. use Magento\Framework\Config\File\ConfigFilePool;
  9. class ConfigOptionsListTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var ConfigOptionsList
  13. */
  14. private $object;
  15. /**
  16. * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\DeploymentConfig
  17. */
  18. private $deploymentConfig;
  19. protected function setUp()
  20. {
  21. $this->object = new ConfigOptionsList();
  22. $this->deploymentConfig = $this->createMock(\Magento\Framework\App\DeploymentConfig::class);
  23. }
  24. public function testGetOptions()
  25. {
  26. $options = $this->object->getOptions();
  27. $this->assertInternalType('array', $options);
  28. foreach ($options as $option) {
  29. $this->assertInstanceOf(\Magento\Framework\Setup\Option\AbstractConfigOption::class, $option);
  30. }
  31. }
  32. public function testCreateConfig()
  33. {
  34. $options = [ConfigOptionsList::INPUT_KEY_BACKEND_FRONTNAME => 'admin'];
  35. $actualConfig = $this->object->createConfig($options, $this->deploymentConfig);
  36. $expectedData = [
  37. [
  38. 'file' => ConfigFilePool::APP_ENV,
  39. 'segment' => 'backend',
  40. 'data' => [
  41. 'backend' => ['frontName' => 'admin']
  42. ]
  43. ]
  44. ];
  45. $this->assertInternalType('array', $actualConfig);
  46. /** @var \Magento\Framework\Config\Data\ConfigData $config */
  47. foreach ($actualConfig as $i => $config) {
  48. $this->assertInstanceOf(\Magento\Framework\Config\Data\ConfigData::class, $config);
  49. $this->assertSame($expectedData[$i]['file'], $config->getFileKey());
  50. $this->assertSame($expectedData[$i]['data'], $config->getData());
  51. }
  52. }
  53. public function testValidate()
  54. {
  55. $options = [ConfigOptionsList::INPUT_KEY_BACKEND_FRONTNAME => 'admin'];
  56. $errors = $this->object->validate($options, $this->deploymentConfig);
  57. $this->assertEmpty($errors);
  58. }
  59. /**
  60. * @param array $options
  61. * @param string $expectedError
  62. * @dataProvider validateInvalidDataProvider
  63. */
  64. public function testValidateInvalid(array $options, $expectedError)
  65. {
  66. $errors = $this->object->validate($options, $this->deploymentConfig);
  67. $this->assertSame([$expectedError], $errors);
  68. }
  69. /**
  70. * @return array
  71. */
  72. public function validateInvalidDataProvider()
  73. {
  74. return [
  75. [[ConfigOptionsList::INPUT_KEY_BACKEND_FRONTNAME => '**'], "Invalid backend frontname '**'"],
  76. [
  77. [ConfigOptionsList::INPUT_KEY_BACKEND_FRONTNAME => 'invalid frontname'],
  78. "Invalid backend frontname 'invalid frontname'"
  79. ],
  80. ];
  81. }
  82. }