GroupRendererTest.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 GroupRendererTest
  10. */
  11. class GroupRendererTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Framework\DB\Select\GroupRenderer
  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. * Set up
  27. *
  28. * @return void
  29. */
  30. protected function setUp()
  31. {
  32. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  33. $this->quoteMock = $this->createPartialMock(\Magento\Framework\DB\Platform\Quote::class, ['quoteIdentifier']);
  34. $this->selectMock = $this->createPartialMock(\Magento\Framework\DB\Select::class, ['getPart']);
  35. $this->model = $objectManager->getObject(
  36. \Magento\Framework\DB\Select\GroupRenderer::class,
  37. ['quote' => $this->quoteMock]
  38. );
  39. }
  40. /**
  41. * @param array $mapValues
  42. * @dataProvider renderNoPartDataProvider
  43. */
  44. public function testRenderNoPart($mapValues)
  45. {
  46. $sql = 'SELECT';
  47. $this->selectMock->expects($this->any())
  48. ->method('getPart')
  49. ->willReturnMap($mapValues);
  50. $this->assertEquals($sql, $this->model->render($this->selectMock, $sql));
  51. }
  52. /**
  53. * Data provider for testRenderNoPart
  54. * @return array
  55. */
  56. public function renderNoPartDataProvider()
  57. {
  58. return [
  59. [[[Select::FROM, false], [Select::GROUP, false]]],
  60. [[[Select::FROM, true], [Select::GROUP, false]]],
  61. [[[Select::FROM, false], [Select::GROUP, true]]],
  62. ];
  63. }
  64. public function testRender()
  65. {
  66. $sql = 'SELECT';
  67. $expectedResult = $sql . ' ' . Select::SQL_GROUP_BY . ' group1' . ",\n\t" . 'group2';
  68. $mapValues = [
  69. [Select::FROM, true],
  70. [Select::GROUP, ['group1', 'group2']]
  71. ];
  72. $this->selectMock->expects($this->exactly(3))
  73. ->method('getPart')
  74. ->willReturnMap($mapValues);
  75. $this->quoteMock->expects($this->exactly(2))
  76. ->method('quoteIdentifier')
  77. ->willReturnArgument(0);
  78. $this->assertEquals($expectedResult, $this->model->render($this->selectMock, $sql));
  79. }
  80. }