ConfigTest.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Search\Model\SearchEngine;
  7. /**
  8. * Class ConfigTest
  9. *
  10. * @magentoAppIsolation enabled
  11. */
  12. class ConfigTest extends \PHPUnit\Framework\TestCase
  13. {
  14. protected function setUp()
  15. {
  16. $xmlPath = __DIR__ . '/../../_files/search_engine.xml';
  17. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  18. // Clear out the cache
  19. $cacheManager = $objectManager->create(\Magento\Framework\App\Cache\Manager::class);
  20. /** @var \Magento\Framework\App\Cache\Manager $cacheManager */
  21. $cacheManager->clean($cacheManager->getAvailableTypes());
  22. $fileResolver = $this->getMockForAbstractClass(
  23. \Magento\Framework\Config\FileResolverInterface::class,
  24. [],
  25. '',
  26. false
  27. );
  28. $fileResolver->expects($this->any())->method('get')->willReturn([file_get_contents($xmlPath)]);
  29. $configReader = $objectManager->create(
  30. \Magento\Framework\Search\SearchEngine\Config\Reader::class,
  31. ['fileResolver' => $fileResolver]
  32. );
  33. $dataStorage = $objectManager->create(
  34. \Magento\Search\Model\SearchEngine\Config\Data::class,
  35. ['reader' => $configReader]
  36. );
  37. $this->config = $objectManager->create(
  38. \Magento\Search\Model\SearchEngine\Config::class,
  39. ['dataStorage' => $dataStorage]
  40. );
  41. }
  42. /**
  43. * Data provider for the test
  44. *
  45. * @return array
  46. */
  47. public static function loadGetDeclaredFeaturesDataProvider()
  48. {
  49. return [
  50. 'features-synonyms' => [
  51. 'searchEngine' => 'mysql',
  52. 'expectedResult' => ['synonyms']
  53. ],
  54. 'features-synonyms-stopwords' => [
  55. 'searchEngine' => 'other',
  56. 'expectedResult' => ['synonyms', 'stopwords']
  57. ],
  58. 'features-none1' => [
  59. 'searchEngine' => 'none1',
  60. 'expectedResult' => []
  61. ],
  62. 'features-none2' => [
  63. 'searchEngine' => 'none2',
  64. 'expectedResult' => []
  65. ],
  66. 'features-none_exist' => [
  67. 'searchEngine' => 'none_exist',
  68. 'expectedResult' => []
  69. ]
  70. ];
  71. }
  72. /**
  73. * @param string $searchEngine
  74. * @param array $expectedResult
  75. * @dataProvider loadGetDeclaredFeaturesDataProvider
  76. */
  77. public function testGetDeclaredFeatures($searchEngine, $expectedResult)
  78. {
  79. $this->assertEquals($expectedResult, $this->config->getDeclaredFeatures($searchEngine));
  80. }
  81. /**
  82. * Data provider for the test
  83. *
  84. * @return array
  85. */
  86. public static function loadIsFeatureSupportedDataProvider()
  87. {
  88. return [
  89. [
  90. 'feature' => 'synonyms',
  91. 'searchEngine' => 'mysql',
  92. 'expectedResult' => true
  93. ],
  94. [
  95. 'feature' => 'stopwords',
  96. 'searchEngine' => 'mysql',
  97. 'expectedResult' => false
  98. ],
  99. [
  100. 'feature' => 'synonyms',
  101. 'searchEngine' => 'other',
  102. 'expectedResult' => true
  103. ],
  104. [
  105. 'feature' => 'stopwords',
  106. 'searchEngine' => 'other',
  107. 'expectedResult' => true
  108. ],
  109. [
  110. 'feature' => 'synonyms',
  111. 'searchEngine' => 'none1',
  112. 'expectedResult' => false
  113. ],
  114. [
  115. 'feature' => 'stopwords',
  116. 'searchEngine' => 'none1',
  117. 'expectedResult' => false
  118. ],
  119. [
  120. 'feature' => 'synonyms',
  121. 'searchEngine' => 'none2',
  122. 'expectedResult' => false
  123. ],
  124. [
  125. 'feature' => 'stopwords',
  126. 'searchEngine' => 'none2',
  127. 'expectedResult' => false
  128. ],
  129. [
  130. 'feature' => 'stopwords',
  131. 'searchEngine' => 'none_exist',
  132. 'expectedResult' => false
  133. ],
  134. [
  135. 'feature' => 'none_exist',
  136. 'searchEngine' => 'none_exist',
  137. 'expectedResult' => false
  138. ],
  139. [
  140. 'feature' => 'none_exist',
  141. 'searchEngine' => 'mysql',
  142. 'expectedResult' => false
  143. ]
  144. ];
  145. }
  146. /**
  147. * @param string $searchEngine
  148. * @param string $feature
  149. * @param array $expectedResult
  150. * @dataProvider loadIsFeatureSupportedDataProvider
  151. */
  152. public function testIsFeatureSupported($searchEngine, $feature, $expectedResult)
  153. {
  154. $this->assertEquals($expectedResult, $this->config->isFeatureSupported($searchEngine, $feature));
  155. }
  156. }