23 private $nameResolverMock;
28 private $selectBuilderMock;
33 private $objectManagerHelper;
38 private $columnsResolverMock;
43 private $conditionResolverMock;
48 private $resourceConnection;
55 $this->nameResolverMock = $this->getMockBuilder(
56 \
Magento\Analytics\ReportXml\DB\NameResolver::class
58 ->disableOriginalConstructor()
61 $this->selectBuilderMock = $this->getMockBuilder(
62 \
Magento\Analytics\ReportXml\DB\SelectBuilder::class
64 ->disableOriginalConstructor()
66 $this->selectBuilderMock->expects($this->any())
67 ->method(
'getFilters')
69 $this->selectBuilderMock->expects($this->any())
70 ->method(
'getColumns')
72 $this->selectBuilderMock->expects($this->any())
76 $this->columnsResolverMock = $this->getMockBuilder(
77 \
Magento\Analytics\ReportXml\DB\ColumnsResolver::class
79 ->disableOriginalConstructor()
82 $this->conditionResolverMock = $this->getMockBuilder(
83 \
Magento\Analytics\ReportXml\DB\ConditionResolver::class
85 ->disableOriginalConstructor()
88 $this->resourceConnection = $this->getMockBuilder(ResourceConnection::class)
89 ->disableOriginalConstructor()
92 $this->objectManagerHelper =
93 new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
95 $this->subject = $this->objectManagerHelper->getObject(
96 \
Magento\Analytics\ReportXml\DB\Assembler\JoinAssembler::class,
98 'conditionResolver' => $this->conditionResolverMock,
99 'nameResolver' => $this->nameResolverMock,
100 'columnsResolver' => $this->columnsResolverMock,
101 'resourceConnection' => $this->resourceConnection,
113 'name' =>
'sales_order',
118 $this->selectBuilderMock->expects($this->never())
119 ->method(
'setColumns');
120 $this->selectBuilderMock->expects($this->never())
121 ->method(
'setFilters');
122 $this->selectBuilderMock->expects($this->never())
123 ->method(
'setJoins');
126 $this->selectBuilderMock,
127 $this->subject->assemble($this->selectBuilderMock, $queryConfigMock)
142 $this->nameResolverMock->expects($this->at(0))
144 ->with($queryConfigMock[
'source'])
145 ->willReturn($queryConfigMock[
'source'][
'alias']);
146 $this->nameResolverMock->expects($this->at(1))
148 ->with($queryConfigMock[
'source'][
'link-source'][0])
149 ->willReturn($queryConfigMock[
'source'][
'link-source'][0][
'alias']);
150 $this->nameResolverMock->expects($this->once())
152 ->with($queryConfigMock[
'source'][
'link-source'][0])
153 ->willReturn($queryConfigMock[
'source'][
'link-source'][0][
'name']);
155 $this->resourceConnection
156 ->expects($this->any())
157 ->method(
'getTableName')
158 ->willReturnOnConsecutiveCalls(...array_values($tablesMapping));
160 $this->conditionResolverMock->expects($this->at(0))
161 ->method(
'getFilter')
163 $this->selectBuilderMock,
164 $queryConfigMock[
'source'][
'link-source'][0][
'using'],
165 $queryConfigMock[
'source'][
'link-source'][0][
'alias'],
166 $queryConfigMock[
'source'][
'alias']
168 ->willReturn(
'(billing.parent_id = `sales`.`entity_id`)');
170 if (isset($queryConfigMock[
'source'][
'link-source'][0][
'filter'])) {
171 $filtersMock = [
'(sales.entity_id IS NULL)'];
173 $this->conditionResolverMock->expects($this->at(1))
174 ->method(
'getFilter')
176 $this->selectBuilderMock,
177 $queryConfigMock[
'source'][
'link-source'][0][
'filter'],
178 $queryConfigMock[
'source'][
'link-source'][0][
'alias'],
179 $queryConfigMock[
'source'][
'alias']
181 ->willReturn($filtersMock[0]);
183 $this->columnsResolverMock->expects($this->once())
184 ->method(
'getColumns')
185 ->with($this->selectBuilderMock, $queryConfigMock[
'source'][
'link-source'][0])
188 'entity_id' =>
'sales.entity_id',
189 'billing_address_id' =>
'billing.entity_id' 193 $this->selectBuilderMock->expects($this->once())
194 ->method(
'setColumns')
197 'entity_id' =>
'sales.entity_id',
198 'billing_address_id' =>
'billing.entity_id' 203 $this->selectBuilderMock->expects($this->once())
204 ->method(
'setFilters')
205 ->with($filtersMock);
206 $this->selectBuilderMock->expects($this->once())
211 $this->selectBuilderMock,
212 $this->subject->assemble($this->selectBuilderMock, $queryConfigMock)
225 'name' =>
'sales_order',
229 'name' =>
'sales_order_address',
230 'alias' =>
'billing',
231 'link-type' =>
'left',
234 'alias' =>
'billing_address_id',
235 'name' =>
'entity_id' 243 'attribute' =>
'parent_id',
245 'type' =>
'identifier',
246 '_value' =>
'entity_id' 256 'attribute' =>
'entity_id',
268 'link-type' =>
'left',
270 'billing' =>
'pref_sales_order_address' 272 'condition' =>
'(billing.parent_id = `sales`.`entity_id`)' 275 [
'sales_order_address' =>
'pref_sales_order_address']
testAssembleNotEmpty(array $queryConfigMock, array $joinsMock, array $tablesMapping)
assembleNotEmptyDataProvider()