Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ColumnsResolverTest.php
Go to the documentation of this file.
1 <?php
7 
15 
16 class ColumnsResolverTest extends \PHPUnit\Framework\TestCase
17 {
21  private $selectBuilderMock;
22 
26  private $columnsResolver;
27 
31  private $resourceConnectionMock;
32 
36  private $connectionMock;
37 
41  protected function setUp()
42  {
43  $this->selectBuilderMock = $this->getMockBuilder(SelectBuilder::class)
44  ->disableOriginalConstructor()
45  ->getMock();
46 
47  $this->resourceConnectionMock = $this->getMockBuilder(ResourceConnection::class)
48  ->disableOriginalConstructor()
49  ->getMock();
50 
51  $this->connectionMock = $this->getMockBuilder(AdapterInterface::class)
52  ->disableOriginalConstructor()
53  ->getMock();
54 
55  $objectManager = new ObjectManagerHelper($this);
56  $this->columnsResolver = $objectManager->getObject(
57  ColumnsResolver::class,
58  [
59  'nameResolver' => new NameResolver(),
60  'resourceConnection' => $this->resourceConnectionMock
61  ]
62  );
63  }
64 
66  {
67  $this->assertEquals($this->columnsResolver->getColumns($this->selectBuilderMock, []), []);
68  }
69 
73  public function testGetColumnsWithFunction($expectedColumns, $expectedGroup, $entityConfig)
74  {
75  $this->resourceConnectionMock->expects($this->any())
76  ->method('getConnection')
77  ->willReturn($this->connectionMock);
78  $this->connectionMock->expects($this->any())
79  ->method('quoteIdentifier')
80  ->with('cpe.name')
81  ->willReturn('`cpe`.`name`');
82  $this->selectBuilderMock->expects($this->once())
83  ->method('getColumns')
84  ->willReturn([]);
85  $this->selectBuilderMock->expects($this->once())
86  ->method('getGroup')
87  ->willReturn([]);
88  $this->selectBuilderMock->expects($this->once())
89  ->method('setGroup')
90  ->with($expectedGroup);
91  $this->assertEquals(
92  $expectedColumns,
93  $this->columnsResolver->getColumns(
94  $this->selectBuilderMock,
95  $entityConfig
96  )
97  );
98  }
99 
103  public function getColumnsDataProvider()
104  {
105  return [
106  'COUNT( DISTINCT `cpe`.`name`) AS name' => [
107  'expectedColumns' => [
108  'name' => new ColumnValueExpression('COUNT( DISTINCT `cpe`.`name`)')
109  ],
110  'expectedGroup' => [
111  'name' => new ColumnValueExpression('COUNT( DISTINCT `cpe`.`name`)')
112  ],
113  'entityConfig' =>
114  [
115  'name' => 'catalog_product_entity',
116  'alias' => 'cpe',
117  'attribute' => [
118  [
119  'name' => 'name',
120  'function' => 'COUNT',
121  'distinct' => true,
122  'group' => true
123  ]
124  ],
125  ],
126  ],
127  'AVG(`cpe`.`name`) AS avg_name' => [
128  'expectedColumns' => [
129  'avg_name' => new ColumnValueExpression('AVG(`cpe`.`name`)')
130  ],
131  'expectedGroup' => [],
132  'entityConfig' =>
133  [
134  'name' => 'catalog_product_entity',
135  'alias' => 'cpe',
136  'attribute' => [
137  [
138  'name' => 'name',
139  'alias' => 'avg_name',
140  'function' => 'AVG',
141  ]
142  ],
143  ],
144  ]
145  ];
146  }
147 }
$objectManager
Definition: bootstrap.php:17
testGetColumnsWithFunction($expectedColumns, $expectedGroup, $entityConfig)