Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FromAssemblerTest.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class FromAssemblerTest extends \PHPUnit\Framework\TestCase
14 {
18  private $subject;
19 
23  private $nameResolverMock;
24 
28  private $selectBuilderMock;
29 
33  private $objectManagerHelper;
34 
38  private $columnsResolverMock;
39 
43  private $resourceConnection;
44 
48  protected function setUp()
49  {
50  $this->nameResolverMock = $this->getMockBuilder(
51  \Magento\Analytics\ReportXml\DB\NameResolver::class
52  )
53  ->disableOriginalConstructor()
54  ->getMock();
55 
56  $this->selectBuilderMock = $this->getMockBuilder(
57  \Magento\Analytics\ReportXml\DB\SelectBuilder::class
58  )
59  ->disableOriginalConstructor()
60  ->getMock();
61  $this->selectBuilderMock->expects($this->any())
62  ->method('getColumns')
63  ->willReturn([]);
64 
65  $this->columnsResolverMock = $this->getMockBuilder(
66  \Magento\Analytics\ReportXml\DB\ColumnsResolver::class
67  )
68  ->disableOriginalConstructor()
69  ->getMock();
70 
71  $this->resourceConnection = $this->getMockBuilder(ResourceConnection::class)
72  ->disableOriginalConstructor()
73  ->getMock();
74 
75  $this->objectManagerHelper =
76  new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
77 
78  $this->subject = $this->objectManagerHelper->getObject(
79  \Magento\Analytics\ReportXml\DB\Assembler\FromAssembler::class,
80  [
81  'nameResolver' => $this->nameResolverMock,
82  'columnsResolver' => $this->columnsResolverMock,
83  'resourceConnection' => $this->resourceConnection,
84  ]
85  );
86  }
87 
94  public function testAssemble(array $queryConfig, $tableName)
95  {
96  $this->nameResolverMock->expects($this->any())
97  ->method('getAlias')
98  ->with($queryConfig['source'])
99  ->willReturn($queryConfig['source']['alias']);
100 
101  $this->nameResolverMock->expects($this->once())
102  ->method('getName')
103  ->with($queryConfig['source'])
104  ->willReturn($queryConfig['source']['name']);
105 
106  $this->resourceConnection
107  ->expects($this->once())
108  ->method('getTableName')
109  ->with($queryConfig['source']['name'])
110  ->willReturn($tableName);
111 
112  $this->selectBuilderMock->expects($this->once())
113  ->method('setFrom')
114  ->with([$queryConfig['source']['alias'] => $tableName]);
115 
116  $this->columnsResolverMock->expects($this->once())
117  ->method('getColumns')
118  ->with($this->selectBuilderMock, $queryConfig['source'])
119  ->willReturn(['entity_id' => 'sales.entity_id']);
120 
121  $this->selectBuilderMock->expects($this->once())
122  ->method('setColumns')
123  ->with(['entity_id' => 'sales.entity_id']);
124 
125  $this->assertEquals(
126  $this->selectBuilderMock,
127  $this->subject->assemble($this->selectBuilderMock, $queryConfig)
128  );
129  }
130 
134  public function assembleDataProvider()
135  {
136  return [
137  'Tables without prefixes' => [
138  [
139  'source' => [
140  'name' => 'sales_order',
141  'alias' => 'sales',
142  'attribute' => [
143  [
144  'name' => 'entity_id'
145  ]
146  ],
147  ],
148  ],
149  'sales_order',
150  ],
151  'Tables with prefixes' => [
152  [
153  'source' => [
154  'name' => 'sales_order',
155  'alias' => 'sales',
156  'attribute' => [
157  [
158  'name' => 'entity_id'
159  ]
160  ],
161  ],
162  ],
163  'pref_sales_order',
164  ]
165  ];
166  }
167 }
$tableName
Definition: trigger.php:13