8
8
namespace tests \unit \Magento \FunctionalTestFramework \Test \Handlers ;
9
9
10
10
use Exception ;
11
+ use Magento \FunctionalTestingFramework \Config \MftfApplicationConfig ;
12
+ use Magento \FunctionalTestingFramework \Exceptions \TestFrameworkException ;
13
+ use Magento \FunctionalTestingFramework \ObjectManager ;
14
+ use Magento \FunctionalTestingFramework \ObjectManagerFactory ;
11
15
use Magento \FunctionalTestingFramework \Test \Handlers \TestObjectHandler ;
12
16
use Magento \FunctionalTestingFramework \Test \Objects \ActionObject ;
13
17
use Magento \FunctionalTestingFramework \Test \Objects \TestHookObject ;
14
18
use Magento \FunctionalTestingFramework \Test \Objects \TestObject ;
19
+ use Magento \FunctionalTestingFramework \Test \Parsers \TestDataParser ;
15
20
use Magento \FunctionalTestingFramework \Test \Util \TestObjectExtractor ;
16
21
use Magento \FunctionalTestingFramework \Util \GenerationErrorHandler ;
22
+ use Magento \FunctionalTestingFramework \Util \ModuleResolver ;
23
+ use ReflectionProperty ;
17
24
use tests \unit \Util \MagentoTestCase ;
18
- use tests \unit \Util \MockModuleResolverBuilder ;
19
- use tests \unit \Util \ObjectHandlerUtil ;
20
25
use tests \unit \Util \TestDataArrayBuilder ;
21
26
use tests \unit \Util \TestLoggingUtil ;
22
27
@@ -51,9 +56,7 @@ public function testGetTestObject(): void
51
56
->withTestActions ()
52
57
->build ();
53
58
54
- $ resolverMock = new MockModuleResolverBuilder ();
55
- $ resolverMock ->setup ();
56
- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ mockData );
59
+ $ this ->mockTestObjectHandler ($ mockData );
57
60
58
61
// run object handler method
59
62
$ toh = TestObjectHandler::getInstance ();
@@ -146,9 +149,7 @@ public function testGetTestsByGroup(): void
146
149
->withTestActions ()
147
150
->build ();
148
151
149
- $ resolverMock = new MockModuleResolverBuilder ();
150
- $ resolverMock ->setup ();
151
- ObjectHandlerUtil::mockTestObjectHandlerWitData (array_merge ($ includeTest , $ excludeTest ));
152
+ $ this ->mockTestObjectHandler (array_merge ($ includeTest , $ excludeTest ));
152
153
153
154
// execute test method
154
155
$ toh = TestObjectHandler::getInstance ();
@@ -195,10 +196,8 @@ public function testGetTestWithModuleName(): void
195
196
->withFileName ($ file )
196
197
->build ();
197
198
198
- $ resolverMock = new MockModuleResolverBuilder ();
199
- $ resolverMock ->setup (['Vendor_ ' . $ moduleExpected => $ filepath ]);
199
+ $ this ->mockTestObjectHandler ($ mockData , ['Vendor_ ' . $ moduleExpected => $ filepath ]);
200
200
201
- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ mockData );
202
201
// Execute Test Method
203
202
$ toh = TestObjectHandler::getInstance ();
204
203
$ actualTestObject = $ toh ->getObject ($ testDataArrayBuilder ->testName );
@@ -225,13 +224,11 @@ public function testGetTestObjectWithInvalidExtends(): void
225
224
->withBeforeHook ()
226
225
->withTestActions ()
227
226
->build ();
228
- $ resolverMock = new MockModuleResolverBuilder ();
229
- $ resolverMock ->setup ();
230
- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ testOne );
231
227
232
- $ toh = TestObjectHandler:: getInstance ( );
228
+ $ this -> mockTestObjectHandler ( $ testOne );
233
229
234
- $ this ->expectException (\Magento \FunctionalTestingFramework \Exceptions \TestFrameworkException::class);
230
+ $ toh = TestObjectHandler::getInstance ();
231
+ $ this ->expectException (TestFrameworkException::class);
235
232
$ this ->expectExceptionMessage ("Mftf Test can not extend from itself: " . "testOne " );
236
233
237
234
$ toh ->getObject ('testOne ' );
@@ -264,9 +261,7 @@ public function testGetAllTestObjectsWithInvalidExtends(): void
264
261
->withTestActions ()
265
262
->build ();
266
263
267
- $ resolverMock = new MockModuleResolverBuilder ();
268
- $ resolverMock ->setup ();
269
- ObjectHandlerUtil::mockTestObjectHandlerWitData (array_merge ($ testOne , $ testTwo ));
264
+ $ this ->mockTestObjectHandler (array_merge ($ testOne , $ testTwo ));
270
265
271
266
$ toh = TestObjectHandler::getInstance ();
272
267
$ toh ->getAllObjects ();
@@ -297,9 +292,7 @@ public function testGetTestObjectWhenEnablePause(): void
297
292
->withTestActions ()
298
293
->build ();
299
294
300
- $ resolverMock = new MockModuleResolverBuilder ();
301
- $ resolverMock ->setup ();
302
- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ mockData );
295
+ $ this ->mockTestObjectHandler ($ mockData );
303
296
304
297
// run object handler method
305
298
$ toh = TestObjectHandler::getInstance ();
@@ -381,4 +374,77 @@ protected function tearDown(): void
381
374
TestLoggingUtil::getInstance ()->clearMockLoggingUtil ();
382
375
parent ::tearDownAfterClass ();
383
376
}
377
+
378
+ /**
379
+ * Mock test object handler.
380
+ *
381
+ * @param array $data
382
+ * @param array|null $paths
383
+ *
384
+ * @return void
385
+ */
386
+ private function mockTestObjectHandler (array $ data , ?array $ paths = null ): void
387
+ {
388
+ if (!$ paths ) {
389
+ $ paths = ['Magento_Module ' => '/base/path/some/other/path/Magento/Module ' ];
390
+ }
391
+ // clear test object handler value to inject parsed content
392
+ $ property = new ReflectionProperty (TestObjectHandler::class, 'testObjectHandler ' );
393
+ $ property ->setAccessible (true );
394
+ $ property ->setValue (null );
395
+
396
+ $ mockDataParser = $ this ->createMock (TestDataParser::class);
397
+ $ mockDataParser
398
+ ->method ('readTestData ' )
399
+ ->willReturn ($ data );
400
+
401
+ $ mockConfig = $ this ->createMock (MftfApplicationConfig::class);
402
+ $ mockConfig
403
+ ->method ('forceGenerateEnabled ' )
404
+ ->willReturn (false );
405
+
406
+ $ mockResolver = $ this ->createMock (ModuleResolver::class);
407
+ $ mockResolver
408
+ ->method ('getEnabledModules ' )
409
+ ->willReturn ([]);
410
+
411
+ $ objectManager = ObjectManagerFactory::getObjectManager ();
412
+ $ objectManagerMockInstance = $ this ->createMock (ObjectManager::class);
413
+ $ objectManagerMockInstance
414
+ ->method ('create ' )
415
+ ->will (
416
+ $ this ->returnCallback (
417
+ function (
418
+ $ class ,
419
+ $ arguments = []
420
+ ) use (
421
+ $ objectManager ,
422
+ $ mockDataParser ,
423
+ $ mockConfig ,
424
+ $ mockResolver
425
+ ) {
426
+ if ($ class === TestDataParser::class) {
427
+ return $ mockDataParser ;
428
+ }
429
+ if ($ class === MftfApplicationConfig::class) {
430
+ return $ mockConfig ;
431
+ }
432
+ if ($ class === ModuleResolver::class) {
433
+ return $ mockResolver ;
434
+ }
435
+
436
+ return $ objectManager ->create ($ class , $ arguments );
437
+ }
438
+ )
439
+ );
440
+
441
+ $ objectManagerProperty = new ReflectionProperty (ObjectManager::class, 'instance ' );
442
+ $ objectManagerProperty ->setAccessible (true );
443
+ $ objectManagerProperty ->setValue ($ objectManagerMockInstance );
444
+
445
+ $ resolver = ModuleResolver::getInstance ();
446
+ $ property = new ReflectionProperty (ModuleResolver::class, 'enabledModuleNameAndPaths ' );
447
+ $ property ->setAccessible (true );
448
+ $ property ->setValue ($ resolver , $ paths );
449
+ }
384
450
}
0 commit comments