public function testStoreDocumentsFromSelect() { $sql = 'some SQL query'; /** @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject $select */ $select = $this->getMockBuilder('Magento\Framework\DB\Select') ->disableOriginalConstructor() ->getMock(); $table = $this->createTemporaryTable(); $table->expects($this->any()) ->method('getName') ->willReturn($this->tableName); $this->adapter->expects($this->once()) ->method('insertFromSelect') ->with($select, $this->tableName) ->willReturn($sql); $this->adapter->expects($this->once()) ->method('query') ->with($sql); $result = $this->model->storeDocumentsFromSelect($select); $this->assertEquals($table, $result); }
/** * @param RequestInterface $request * @param Select $select * @param IndexBuilderInterface $indexBuilder * @param MatchContainer[] $matchQueries * @return Select */ private function addMatchQueries(RequestInterface $request, Select $select, IndexBuilderInterface $indexBuilder, array $matchQueries) { $queriesCount = count($matchQueries); if ($queriesCount) { $table = $this->temporaryStorage->storeDocumentsFromSelect($select); foreach ($matchQueries as $matchContainer) { $queriesCount--; $matchScoreBuilder = $this->scoreBuilderFactory->create(); $matchSelect = $this->matchBuilder->build($matchScoreBuilder, $indexBuilder->build($request), $matchContainer->getRequest(), $matchContainer->getConditionType()); $select = $this->joinPreviousResultToSelect($matchSelect, $table, $matchScoreBuilder); if ($queriesCount) { $previousResultTable = $table; $table = $this->temporaryStorage->storeDocumentsFromSelect($select); $this->getConnection()->dropTable($previousResultTable->getName()); } } } return $select; }