13
13
use Magento \Framework \ObjectManagerInterface ;
14
14
use Magento \Framework \TestFramework \Unit \Helper \ObjectManager as ObjectManagerHelper ;
15
15
16
+ /**
17
+ * Class SelectHydratorTest
18
+ */
16
19
class SelectHydratorTest extends \PHPUnit_Framework_TestCase
17
20
{
18
21
/**
@@ -40,11 +43,6 @@ class SelectHydratorTest extends \PHPUnit_Framework_TestCase
40
43
*/
41
44
private $ objectManagerMock ;
42
45
43
- /**
44
- * @var JsonSerializableExpression|\PHPUnit_Framework_MockObject_MockObject
45
- */
46
- private $ expressionMock ;
47
-
48
46
/**
49
47
* @var ObjectManagerHelper
50
48
*/
@@ -173,30 +171,19 @@ public function recreateWithoutExpressionDataProvider()
173
171
/**
174
172
* @dataProvider recreateWithExpressionDataProvider
175
173
* @param array $selectParts
176
- * @param array $parts
177
- * @param array $partValues
178
- * @param array $mocks
174
+ * @param array $expectedParts
175
+ * @param \PHPUnit_Framework_MockObject_MockObject[] $expressionMocks
179
176
*/
180
- public function testRecreateWithExpression ($ selectParts , $ parts , $ partValues , $ mocks = [])
181
- {
182
- /** data provider executes in isolation so all mocks have to be set in the test */
183
- foreach ($ mocks as $ mockName => $ mockObject ) {
184
- $ this ->{$ mockName } = $ mockObject ;
185
- }
186
-
187
- $ checkClassName = function ($ value ) {
188
- return is_string ($ value );
189
- };
190
-
191
- $ checkArguments = function ($ value ) {
192
- return is_array ($ value );
193
- };
194
-
177
+ public function testRecreateWithExpression (
178
+ array $ selectParts ,
179
+ array $ expectedParts ,
180
+ array $ expressionMocks
181
+ ) {
195
182
$ this ->objectManagerMock
196
- ->expects ($ this ->once ( ))
183
+ ->expects ($ this ->exactly ( count ( $ expressionMocks ) ))
197
184
->method ('create ' )
198
- ->with ($ this ->callback ( $ checkClassName ), $ this ->callback ( $ checkArguments ))
199
- ->willReturn ( $ this -> expressionMock );
185
+ ->with ($ this ->isType ( ' string ' ), $ this ->isType ( ' array ' ))
186
+ ->willReturnOnConsecutiveCalls (... $ expressionMocks );
200
187
$ this ->resourceConnectionMock
201
188
->expects ($ this ->once ())
202
189
->method ('getConnection ' )
@@ -207,10 +194,11 @@ public function testRecreateWithExpression($selectParts, $parts, $partValues, $m
207
194
->method ('select ' )
208
195
->with ()
209
196
->willReturn ($ this ->selectMock );
210
- foreach ($ parts as $ key => $ part ) {
211
- $ this ->selectMock ->expects ($ this ->at ($ key ))
197
+ foreach (array_keys ($ selectParts ) as $ key => $ partName ) {
198
+ $ this ->selectMock
199
+ ->expects ($ this ->at ($ key ))
212
200
->method ('setPart ' )
213
- ->with ($ part , $ partValues [ $ key ]);
201
+ ->with ($ partName , $ expectedParts [ $ partName ]);
214
202
}
215
203
216
204
$ this ->assertSame ($ this ->selectMock , $ this ->selectHydrator ->recreate ($ selectParts ));
@@ -246,21 +234,22 @@ public function recreateWithExpressionDataProvider()
246
234
],
247
235
]
248
236
],
249
- 'Parts names ' => [Select::COLUMNS ],
250
- 'Assembled parts ' => [[
251
- [
252
- 'table_name ' ,
253
- 'field_name ' ,
254
- 'alias ' ,
255
- ],
256
- [
257
- 'table_name ' ,
258
- $ expressionMock ,
259
- 'alias_2 ' ,
260
- ],
261
- ]],
262
- 'Mocks ' => [
263
- 'expressionMock ' => $ expressionMock
237
+ 'expectedParts ' => [
238
+ Select::COLUMNS => [
239
+ [
240
+ 'table_name ' ,
241
+ 'field_name ' ,
242
+ 'alias ' ,
243
+ ],
244
+ [
245
+ 'table_name ' ,
246
+ $ expressionMock ,
247
+ 'alias_2 ' ,
248
+ ],
249
+ ]
250
+ ],
251
+ 'expectedExpressions ' => [
252
+ $ expressionMock
264
253
]
265
254
],
266
255
];
0 commit comments