PageRenderTime 52ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/magento/framework/Search/Test/Unit/Adapter/Mysql/AdapterTest.php

https://gitlab.com/yousafsyed/easternglamor
PHP | 187 lines | 122 code | 28 blank | 37 comment | 0 complexity | bb887acf21e54fb3a90518cc37d328c5 MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright © 2016 Magento. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Search\Test\Unit\Adapter\Mysql;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\Search\Request\BucketInterface;
  9. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  10. class AdapterTest extends \PHPUnit_Framework_TestCase
  11. {
  12. /**
  13. * @var ResponseFactory|\PHPUnit_Framework_MockObject_MockObject
  14. */
  15. protected $responseFactory;
  16. /**
  17. * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. private $connectionAdapter;
  20. /**
  21. * @var \Magento\Framework\Search\Adapter\Mysql\Mapper|\PHPUnit_Framework_MockObject_MockObject
  22. */
  23. private $mapper;
  24. /**
  25. * @var \Magento\Framework\Search\Adapter\Mysql\Adapter
  26. */
  27. private $adapter;
  28. /**
  29. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  30. */
  31. private $objectManager;
  32. /**
  33. * @var \Magento\Framework\Search\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
  34. */
  35. private $request;
  36. /**
  37. * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
  38. */
  39. private $select;
  40. /**
  41. * @var \Magento\Framework\App\ResourceConnection|\PHPUnit_Framework_MockObject_MockObject
  42. */
  43. private $resource;
  44. /**
  45. * @var BucketInterface|\PHPUnit_Framework_MockObject_MockObject
  46. */
  47. private $bucket;
  48. /**
  49. * @var \Magento\Framework\Search\Adapter\Mysql\Aggregation\Builder|\PHPUnit_Framework_MockObject_MockObject
  50. */
  51. private $aggregatioBuilder;
  52. /**
  53. * @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorage|\PHPUnit_Framework_MockObject_MockObject
  54. */
  55. private $temporaryStorage;
  56. protected function setUp()
  57. {
  58. $this->objectManager = new ObjectManager($this);
  59. $this->request = $this->getMockBuilder('Magento\Framework\Search\RequestInterface')
  60. ->setMethods(['getAggregation'])
  61. ->disableOriginalConstructor()
  62. ->getMockForAbstractClass();
  63. $this->resource = $this->getMockBuilder('Magento\Framework\App\ResourceConnection')
  64. ->setMethods(['getConnection'])
  65. ->disableOriginalConstructor()
  66. ->getMock();
  67. $this->select = $this->getMockBuilder('Magento\Framework\DB\Select')
  68. ->setMethods([])
  69. ->disableOriginalConstructor()
  70. ->getMock();
  71. $this->connectionAdapter = $this->getMockBuilder('Magento\Framework\DB\Adapter\AdapterInterface')
  72. ->setMethods(['fetchAssoc'])
  73. ->disableOriginalConstructor()
  74. ->getMockForAbstractClass();
  75. $this->resource->expects($this->any())
  76. ->method('getConnection')
  77. ->will($this->returnValue($this->connectionAdapter));
  78. $this->mapper = $this->getMockBuilder('\Magento\Framework\Search\Adapter\Mysql\Mapper')
  79. ->setMethods(['buildQuery'])
  80. ->disableOriginalConstructor()
  81. ->getMock();
  82. $this->responseFactory = $this->getMockBuilder('\Magento\Framework\Search\Adapter\Mysql\ResponseFactory')
  83. ->setMethods([])
  84. ->disableOriginalConstructor()
  85. ->getMock();
  86. $this->aggregatioBuilder = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\Aggregation\Builder')
  87. ->setMethods(['build'])
  88. ->disableOriginalConstructor()
  89. ->getMock();
  90. $this->bucket = $this->getMockBuilder('Magento\Framework\Search\Request\BucketInterface')
  91. ->setMethods(['getType', 'getName'])
  92. ->disableOriginalConstructor()
  93. ->getMockForAbstractClass();
  94. $this->temporaryStorage = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\TemporaryStorage')
  95. ->disableOriginalConstructor()
  96. ->getMock();
  97. $temporaryStorageFactoryName = 'Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory';
  98. $temporaryStorageFactory = $this->getMockBuilder($temporaryStorageFactoryName)
  99. ->setMethods(['create'])
  100. ->disableOriginalConstructor()
  101. ->getMock();
  102. $temporaryStorageFactory->expects($this->any())
  103. ->method('create')
  104. ->willReturn($this->temporaryStorage);
  105. $this->adapter = $this->objectManager->getObject(
  106. 'Magento\Framework\Search\Adapter\Mysql\Adapter',
  107. [
  108. 'mapper' => $this->mapper,
  109. 'responseFactory' => $this->responseFactory,
  110. 'resource' => $this->resource,
  111. 'aggregationBuilder' => $this->aggregatioBuilder,
  112. 'temporaryStorageFactory' => $temporaryStorageFactory,
  113. ]
  114. );
  115. }
  116. public function testQuery()
  117. {
  118. $selectResult = [
  119. 'documents' => [
  120. [
  121. 'product_id' => 1,
  122. 'sku' => 'Product',
  123. ],
  124. ],
  125. 'aggregations' => [
  126. 'aggregation_name' => [
  127. 'aggregation1' => [1, 3],
  128. 'aggregation2' => [2, 4],
  129. ],
  130. ],
  131. ];
  132. $select = $this->getMockBuilder('Magento\Framework\DB\Select')
  133. ->disableOriginalConstructor()
  134. ->getMock();
  135. $this->connectionAdapter->expects($this->once())
  136. ->method('select')
  137. ->willReturn($select);
  138. $table = $this->getMockBuilder('Magento\Framework\DB\Ddl\Table')
  139. ->disableOriginalConstructor()
  140. ->getMock();
  141. $this->temporaryStorage->expects($this->any())
  142. ->method('storeDocumentsFromSelect')
  143. ->willReturn($table);
  144. $this->connectionAdapter->expects($this->any())
  145. ->method('fetchAssoc')
  146. ->will($this->returnValue($selectResult['documents']));
  147. $this->mapper->expects($this->once())
  148. ->method('buildQuery')
  149. ->with($this->request)
  150. ->will($this->returnValue($this->select));
  151. $this->responseFactory->expects($this->once())
  152. ->method('create')
  153. ->with($selectResult)
  154. ->will($this->returnArgument(0));
  155. $this->aggregatioBuilder->expects($this->once())->method('build')->willReturn($selectResult['aggregations']);
  156. $response = $this->adapter->query($this->request);
  157. $this->assertEquals($selectResult, $response);
  158. }
  159. }