/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
- <?php
- /**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Search\Test\Unit\Adapter\Mysql;
- use Magento\Framework\App\ResourceConnection;
- use Magento\Framework\Search\Request\BucketInterface;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
- class AdapterTest extends \PHPUnit_Framework_TestCase
- {
- /**
- * @var ResponseFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $responseFactory;
- /**
- * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $connectionAdapter;
- /**
- * @var \Magento\Framework\Search\Adapter\Mysql\Mapper|\PHPUnit_Framework_MockObject_MockObject
- */
- private $mapper;
- /**
- * @var \Magento\Framework\Search\Adapter\Mysql\Adapter
- */
- private $adapter;
- /**
- * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
- */
- private $objectManager;
- /**
- * @var \Magento\Framework\Search\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $request;
- /**
- * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
- */
- private $select;
- /**
- * @var \Magento\Framework\App\ResourceConnection|\PHPUnit_Framework_MockObject_MockObject
- */
- private $resource;
- /**
- * @var BucketInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- private $bucket;
- /**
- * @var \Magento\Framework\Search\Adapter\Mysql\Aggregation\Builder|\PHPUnit_Framework_MockObject_MockObject
- */
- private $aggregatioBuilder;
- /**
- * @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorage|\PHPUnit_Framework_MockObject_MockObject
- */
- private $temporaryStorage;
- protected function setUp()
- {
- $this->objectManager = new ObjectManager($this);
- $this->request = $this->getMockBuilder('Magento\Framework\Search\RequestInterface')
- ->setMethods(['getAggregation'])
- ->disableOriginalConstructor()
- ->getMockForAbstractClass();
- $this->resource = $this->getMockBuilder('Magento\Framework\App\ResourceConnection')
- ->setMethods(['getConnection'])
- ->disableOriginalConstructor()
- ->getMock();
- $this->select = $this->getMockBuilder('Magento\Framework\DB\Select')
- ->setMethods([])
- ->disableOriginalConstructor()
- ->getMock();
- $this->connectionAdapter = $this->getMockBuilder('Magento\Framework\DB\Adapter\AdapterInterface')
- ->setMethods(['fetchAssoc'])
- ->disableOriginalConstructor()
- ->getMockForAbstractClass();
- $this->resource->expects($this->any())
- ->method('getConnection')
- ->will($this->returnValue($this->connectionAdapter));
- $this->mapper = $this->getMockBuilder('\Magento\Framework\Search\Adapter\Mysql\Mapper')
- ->setMethods(['buildQuery'])
- ->disableOriginalConstructor()
- ->getMock();
- $this->responseFactory = $this->getMockBuilder('\Magento\Framework\Search\Adapter\Mysql\ResponseFactory')
- ->setMethods([])
- ->disableOriginalConstructor()
- ->getMock();
- $this->aggregatioBuilder = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\Aggregation\Builder')
- ->setMethods(['build'])
- ->disableOriginalConstructor()
- ->getMock();
- $this->bucket = $this->getMockBuilder('Magento\Framework\Search\Request\BucketInterface')
- ->setMethods(['getType', 'getName'])
- ->disableOriginalConstructor()
- ->getMockForAbstractClass();
- $this->temporaryStorage = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\TemporaryStorage')
- ->disableOriginalConstructor()
- ->getMock();
- $temporaryStorageFactoryName = 'Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory';
- $temporaryStorageFactory = $this->getMockBuilder($temporaryStorageFactoryName)
- ->setMethods(['create'])
- ->disableOriginalConstructor()
- ->getMock();
- $temporaryStorageFactory->expects($this->any())
- ->method('create')
- ->willReturn($this->temporaryStorage);
- $this->adapter = $this->objectManager->getObject(
- 'Magento\Framework\Search\Adapter\Mysql\Adapter',
- [
- 'mapper' => $this->mapper,
- 'responseFactory' => $this->responseFactory,
- 'resource' => $this->resource,
- 'aggregationBuilder' => $this->aggregatioBuilder,
- 'temporaryStorageFactory' => $temporaryStorageFactory,
- ]
- );
- }
- public function testQuery()
- {
- $selectResult = [
- 'documents' => [
- [
- 'product_id' => 1,
- 'sku' => 'Product',
- ],
- ],
- 'aggregations' => [
- 'aggregation_name' => [
- 'aggregation1' => [1, 3],
- 'aggregation2' => [2, 4],
- ],
- ],
- ];
- $select = $this->getMockBuilder('Magento\Framework\DB\Select')
- ->disableOriginalConstructor()
- ->getMock();
- $this->connectionAdapter->expects($this->once())
- ->method('select')
- ->willReturn($select);
- $table = $this->getMockBuilder('Magento\Framework\DB\Ddl\Table')
- ->disableOriginalConstructor()
- ->getMock();
- $this->temporaryStorage->expects($this->any())
- ->method('storeDocumentsFromSelect')
- ->willReturn($table);
- $this->connectionAdapter->expects($this->any())
- ->method('fetchAssoc')
- ->will($this->returnValue($selectResult['documents']));
- $this->mapper->expects($this->once())
- ->method('buildQuery')
- ->with($this->request)
- ->will($this->returnValue($this->select));
- $this->responseFactory->expects($this->once())
- ->method('create')
- ->with($selectResult)
- ->will($this->returnArgument(0));
- $this->aggregatioBuilder->expects($this->once())->method('build')->willReturn($selectResult['aggregations']);
- $response = $this->adapter->query($this->request);
- $this->assertEquals($selectResult, $response);
- }
- }