BuilderTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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;
  7. use Magento\Elasticsearch\SearchAdapter\Aggregation\Builder;
  8. use Magento\Elasticsearch\SearchAdapter\Aggregation\DataProviderFactory;
  9. use Magento\Elasticsearch\SearchAdapter\QueryContainer;
  10. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  11. use Magento\Framework\Search\Dynamic\DataProviderInterface;
  12. use Magento\Elasticsearch\SearchAdapter\Aggregation\Builder\BucketBuilderInterface;
  13. class BuilderTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var DataProviderFactory|\PHPUnit_Framework_MockObject_MockObject
  17. */
  18. private $dataProviderFactory;
  19. /**
  20. * @var Builder
  21. */
  22. private $model;
  23. /**
  24. * @var \Magento\Framework\Search\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $requestInterface;
  27. /**
  28. * @var \Magento\Framework\Search\Request\BucketInterface|\PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $requestBuckedInterface;
  31. /**
  32. * @var DataProviderInterface|\PHPUnit_Framework_MockObject_MockObject
  33. */
  34. protected $dataProviderContainer;
  35. /**
  36. * @var BucketBuilderInterface|\PHPUnit_Framework_MockObject_MockObject
  37. */
  38. protected $aggregationContainer;
  39. /**
  40. * Set up test environment.
  41. *
  42. * @return void
  43. */
  44. protected function setUp()
  45. {
  46. $this->dataProviderContainer = $this->getMockBuilder(
  47. \Magento\Framework\Search\Dynamic\DataProviderInterface::class
  48. )
  49. ->disableOriginalConstructor()
  50. ->getMock();
  51. $this->aggregationContainer = $this
  52. ->getMockBuilder(\Magento\Elasticsearch\SearchAdapter\Aggregation\Builder\BucketBuilderInterface::class)
  53. ->disableOriginalConstructor()
  54. ->getMock();
  55. $this->dataProviderFactory = $this->getMockBuilder(
  56. \Magento\Elasticsearch\SearchAdapter\Aggregation\DataProviderFactory::class
  57. )
  58. ->disableOriginalConstructor()
  59. ->setMethods(['create'])
  60. ->getMock();
  61. $objectManagerHelper = new ObjectManagerHelper($this);
  62. $this->model = $objectManagerHelper->getObject(
  63. \Magento\Elasticsearch\SearchAdapter\Aggregation\Builder::class,
  64. [
  65. 'dataProviderContainer' => ['indexName' => $this->dataProviderContainer],
  66. 'aggregationContainer' => ['bucketType' => $this->aggregationContainer],
  67. 'dataProviderFactory' => $this->dataProviderFactory,
  68. ]
  69. );
  70. }
  71. /**
  72. * Test build() method
  73. */
  74. public function testBuild()
  75. {
  76. $this->requestInterface = $this->getMockBuilder(\Magento\Framework\Search\RequestInterface::class)
  77. ->disableOriginalConstructor()
  78. ->getMock();
  79. $this->requestBuckedInterface = $this->getMockBuilder(\Magento\Framework\Search\Request\BucketInterface::class)
  80. ->disableOriginalConstructor()
  81. ->getMock();
  82. $this->requestInterface->expects($this->once())
  83. ->method('getIndex')
  84. ->willReturn('indexName');
  85. $dimensionMock = $this->getMockBuilder(\Magento\Framework\Search\Request\Dimension::class)
  86. ->disableOriginalConstructor()
  87. ->getMock();
  88. $this->requestInterface->expects($this->once())
  89. ->method('getDimensions')
  90. ->willReturn([$dimensionMock]);
  91. $this->requestInterface->expects($this->once())
  92. ->method('getAggregation')
  93. ->willReturn([$this->requestBuckedInterface]);
  94. $this->requestBuckedInterface->expects($this->any())
  95. ->method('getName')
  96. ->willReturn('price_bucket');
  97. $this->requestBuckedInterface->expects($this->any())
  98. ->method('getType')
  99. ->willReturn('bucketType');
  100. $this->aggregationContainer->expects($this->any())
  101. ->method('build')
  102. ->willReturn([]);
  103. $this->dataProviderFactory->expects($this->once())
  104. ->method('create')
  105. ->willReturnArgument(0);
  106. $queryContainer = $this->getMockBuilder(QueryContainer::class)
  107. ->disableOriginalConstructor()
  108. ->getMock();
  109. $this->model->setQuery($queryContainer);
  110. $this->assertEquals(
  111. [
  112. 'price_bucket' => [],
  113. ],
  114. $this->model->build($this->requestInterface, [])
  115. );
  116. }
  117. }