123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\DB\Test\Unit\Select;
- use Magento\Framework\DB\Select;
- /**
- * Class FromRendererTest
- */
- class FromRendererTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Framework\DB\Select\FromRenderer
- */
- protected $model;
- /**
- * @var \Magento\Framework\DB\Platform\Quote|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $quoteMock;
- /**
- * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $selectMock;
- /**
- * Set up
- *
- * @return void
- */
- protected function setUp()
- {
- $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $this->quoteMock =
- $this->createPartialMock(\Magento\Framework\DB\Platform\Quote::class, ['quoteTableAs', 'quoteIdentifier']);
- $this->selectMock = $this->createPartialMock(\Magento\Framework\DB\Select::class, ['getPart']);
- $this->model = $objectManager->getObject(
- \Magento\Framework\DB\Select\FromRenderer::class,
- ['quote' => $this->quoteMock]
- );
- }
- public function testRenderNoPart()
- {
- $sql = 'SELECT';
- $this->selectMock->expects($this->once())
- ->method('getPart')
- ->with(Select::FROM)
- ->willReturn([]);
- $this->assertEquals($sql, $this->model->render($this->selectMock, $sql));
- }
- /**
- * @param array $from
- * @param string $sql
- * @param string $expectedResult
- * @dataProvider renderDataProvider
- */
- public function testRender($from, $sql, $expectedResult)
- {
- $this->quoteMock->expects($this->any())
- ->method('quoteIdentifier')
- ->willReturnArgument(0);
- $this->quoteMock->expects($this->any())
- ->method('quoteTableAs')
- ->willReturnCallback(
- function ($tableName, $correlationName) {
- return $tableName.' AS '.$correlationName;
- }
- );
- $this->selectMock->expects($this->once())
- ->method('getPart')
- ->with(Select::FROM)
- ->willReturn($from);
- $this->assertEquals($expectedResult, $this->model->render($this->selectMock, $sql));
- }
- /**
- * Data provider for testRender
- * @return array
- */
- public function renderDataProvider()
- {
- return [
- [
- [['joinType' => Select::FROM, 'schema' => null, 'tableName' => 't1', 'joinCondition' => null]],
- 'SELECT *',
- 'SELECT * FROM t1 AS 0'
- ],
- [
- [
- 'a' => ['joinType' => Select::FROM, 'schema' => null, 'tableName' => 't1', 'joinCondition' => null],
- 'b' => ['joinType' => Select::FROM, 'schema' => null, 'tableName' => 't2', 'joinCondition' => null]
- ],
- 'SELECT a.*',
- 'SELECT a.* FROM t1 AS a' . "\n" . ' INNER JOIN t2 AS b'
- ],
- [
- [
- 'a' => ['joinType' => Select::FROM, 'schema' => null, 'tableName' => 't1', 'joinCondition' => null],
- 'b' => [
- 'joinType' => Select::LEFT_JOIN,
- 'schema' => 'db',
- 'tableName' => 't2',
- 'joinCondition' => 't1.f1 = t2.f2'
- ]
- ],
- 'SELECT b.f2',
- 'SELECT b.f2 FROM t1 AS a' . "\n" . ' LEFT JOIN db.t2 AS b ON t1.f1 = t2.f2'
- ]
- ];
- }
- }
|