DynamicTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Elasticsearch\Test\Unit\SearchAdapter\Aggregation\Builder;
  7. use Magento\Elasticsearch\SearchAdapter\Aggregation\Builder\Dynamic;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  9. class DynamicTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var Dynamic
  13. */
  14. private $model;
  15. /**
  16. * @var \Magento\Framework\Search\Request\BucketInterface|\PHPUnit_Framework_MockObject_MockObject
  17. */
  18. protected $requestBuckedInterface;
  19. /**
  20. * @var \Magento\Framework\Search\Dynamic\DataProviderInterface|\PHPUnit_Framework_MockObject_MockObject
  21. */
  22. protected $dataProviderContainer;
  23. /**
  24. * @var \Magento\Framework\Search\Dynamic\Algorithm\AlgorithmInterface|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $algorithmRepository;
  27. /**
  28. * @var \Magento\Framework\Search\Dynamic\EntityStorageFactory|\PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $entityStorageFactory;
  31. /**
  32. * @var \Magento\Framework\Search\Dynamic\Algorithm\AlgorithmInterface|\PHPUnit_Framework_MockObject_MockObject
  33. */
  34. protected $algorithmInterface;
  35. /**
  36. * @var \Magento\Framework\Search\Request\Aggregation\DynamicBucket|\PHPUnit_Framework_MockObject_MockObject
  37. */
  38. protected $bucket;
  39. /**
  40. * @var \Magento\Framework\Search\Dynamic\EntityStorage|\PHPUnit_Framework_MockObject_MockObject
  41. */
  42. protected $entityStorage;
  43. /**
  44. * Set up test environment.
  45. *
  46. * @return void
  47. */
  48. protected function setUp()
  49. {
  50. $this->requestBuckedInterface = $this->getMockBuilder(\Magento\Framework\Search\Request\BucketInterface::class)
  51. ->disableOriginalConstructor()
  52. ->getMock();
  53. $this->dataProviderContainer = $this
  54. ->getMockBuilder(\Magento\Elasticsearch\SearchAdapter\Dynamic\DataProvider::class)
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $this->algorithmRepository = $this->getMockBuilder(
  58. \Magento\Framework\Search\Dynamic\Algorithm\Repository::class
  59. )
  60. ->disableOriginalConstructor()
  61. ->getMock();
  62. $this->entityStorageFactory = $this->getMockBuilder(
  63. \Magento\Framework\Search\Dynamic\EntityStorageFactory::class
  64. )
  65. ->disableOriginalConstructor()
  66. ->getMock();
  67. $this->algorithmInterface = $this
  68. ->getMockBuilder(\Magento\Framework\Search\Dynamic\Algorithm\AlgorithmInterface::class)
  69. ->disableOriginalConstructor()
  70. ->getMock();
  71. $this->bucket = $this->getMockBuilder(\Magento\Framework\Search\Request\Aggregation\DynamicBucket::class)
  72. ->setMethods(['getMethod'])
  73. ->disableOriginalConstructor()
  74. ->getMock();
  75. $this->entityStorage = $this->getMockBuilder(\Magento\Framework\Search\Dynamic\EntityStorage::class)
  76. ->disableOriginalConstructor()
  77. ->getMock();
  78. $this->entityStorageFactory->expects($this->any())
  79. ->method('create')
  80. ->willReturn($this->entityStorage);
  81. $objectManagerHelper = new ObjectManagerHelper($this);
  82. $this->model = $objectManagerHelper->getObject(
  83. \Magento\Elasticsearch\SearchAdapter\Aggregation\Builder\Dynamic::class,
  84. [
  85. 'algorithmRepository' => $this->algorithmRepository,
  86. 'entityStorageFactory' => $this->entityStorageFactory,
  87. ]
  88. );
  89. }
  90. /**
  91. * Test build() method
  92. */
  93. public function testBuild()
  94. {
  95. $dimensions = [
  96. 'scope' => [
  97. 'name' => 'scope',
  98. 'value' => 1,
  99. ],
  100. ];
  101. $queryResult = [
  102. 'took' => 1,
  103. 'timed_out' => false,
  104. '_shards' => [],
  105. 'hits' => [
  106. 'total' => 1,
  107. 'max_score' => 1,
  108. 'hits' => [
  109. [
  110. '_id' => 1,
  111. ]
  112. ],
  113. ],
  114. 'aggregations' => [],
  115. ];
  116. $this->bucket->expects($this->once())
  117. ->method('getMethod')
  118. ->willReturn('auto');
  119. $this->algorithmRepository->expects($this->any())
  120. ->method('get')
  121. ->with('auto', ['dataProvider' => $this->dataProviderContainer])
  122. ->willReturn($this->algorithmInterface);
  123. $this->algorithmInterface->expects($this->once())
  124. ->method('getItems')
  125. ->with(
  126. $this->bucket,
  127. $dimensions,
  128. $this->entityStorage
  129. )
  130. ->willReturn([
  131. 0 => [
  132. 'from' => '',
  133. 'to' => 22,
  134. 'count' => 2,
  135. ],
  136. 1 => [
  137. 'from' => 22,
  138. 'to' => 24,
  139. 'count' => 4,
  140. ],
  141. 2 => [
  142. 'from' => 24,
  143. 'to' => '',
  144. 'count' => 6,
  145. ],
  146. ]);
  147. $this->model->build(
  148. $this->bucket,
  149. $dimensions,
  150. $queryResult,
  151. $this->dataProviderContainer
  152. );
  153. }
  154. }