ColumnsRendererTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\DB\Test\Unit\Select;
  7. use Magento\Framework\DB\Select;
  8. /**
  9. * Class ColumnsRendererTest
  10. */
  11. class ColumnsRendererTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Framework\DB\Select\ColumnsRenderer
  15. */
  16. protected $model;
  17. /**
  18. * @var \Magento\Framework\DB\Platform\Quote|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $quoteMock;
  21. /**
  22. * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $selectMock;
  25. /**
  26. * @var \Zend_Db_Expr
  27. */
  28. protected $sqlWildcard;
  29. /**
  30. * Set up
  31. *
  32. * @return void
  33. */
  34. protected function setUp()
  35. {
  36. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  37. $this->quoteMock = $this->createPartialMock(\Magento\Framework\DB\Platform\Quote::class, ['quoteColumnAs']);
  38. $this->selectMock = $this->createPartialMock(\Magento\Framework\DB\Select::class, ['getPart']);
  39. $this->model = $objectManager->getObject(
  40. \Magento\Framework\DB\Select\ColumnsRenderer::class,
  41. ['quote' => $this->quoteMock]
  42. );
  43. $this->sqlWildcard = new \Zend_Db_Expr(Select::SQL_WILDCARD);
  44. }
  45. public function testRenderNotColumns()
  46. {
  47. $this->selectMock->expects($this->once())
  48. ->method('getPart')
  49. ->with(Select::COLUMNS)
  50. ->willReturn([]);
  51. $this->assertNull($this->model->render($this->selectMock));
  52. }
  53. /**
  54. * @param array $columns
  55. * @param string $sql
  56. * @param string $expectedResult
  57. * @dataProvider renderDataProvider
  58. */
  59. public function testRender($columns, $sql, $expectedResult)
  60. {
  61. $mapValues = [
  62. ['column', null, '`column`'],
  63. [['table', 'column'], null, '`table`.`column`'],
  64. [['table', 'column'], 'alias', '`table`.`column` AS `alias`'],
  65. ];
  66. $this->quoteMock->expects($this->any())
  67. ->method('quoteColumnAs')
  68. ->willReturnMap($mapValues);
  69. $this->selectMock->expects($this->exactly(2))
  70. ->method('getPart')
  71. ->with(Select::COLUMNS)
  72. ->willReturn($columns);
  73. $this->assertEquals($expectedResult, $this->model->render($this->selectMock, $sql));
  74. }
  75. /**
  76. * @return array
  77. */
  78. public function renderDataProvider()
  79. {
  80. return [
  81. [[['', 'column', null]], 'SELECT', 'SELECT `column`'],
  82. [[['table', 'column', null]], 'SELECT', 'SELECT `table`.`column`'],
  83. [[['table', 'column', 'alias']], 'SELECT', 'SELECT `table`.`column` AS `alias`'],
  84. ];
  85. }
  86. }