88namespace tests \unit \Magento \FunctionalTestFramework \Test \Handlers ;
99
1010use Exception ;
11+ use Magento \FunctionalTestingFramework \Config \MftfApplicationConfig ;
12+ use Magento \FunctionalTestingFramework \Exceptions \TestFrameworkException ;
13+ use Magento \FunctionalTestingFramework \ObjectManager ;
14+ use Magento \FunctionalTestingFramework \ObjectManagerFactory ;
1115use Magento \FunctionalTestingFramework \Test \Handlers \TestObjectHandler ;
1216use Magento \FunctionalTestingFramework \Test \Objects \ActionObject ;
1317use Magento \FunctionalTestingFramework \Test \Objects \TestHookObject ;
1418use Magento \FunctionalTestingFramework \Test \Objects \TestObject ;
19+ use Magento \FunctionalTestingFramework \Test \Parsers \TestDataParser ;
1520use Magento \FunctionalTestingFramework \Test \Util \TestObjectExtractor ;
1621use Magento \FunctionalTestingFramework \Util \GenerationErrorHandler ;
22+ use Magento \FunctionalTestingFramework \Util \ModuleResolver ;
23+ use ReflectionProperty ;
1724use tests \unit \Util \MagentoTestCase ;
18- use tests \unit \Util \MockModuleResolverBuilder ;
19- use tests \unit \Util \ObjectHandlerUtil ;
2025use tests \unit \Util \TestDataArrayBuilder ;
2126use tests \unit \Util \TestLoggingUtil ;
2227
@@ -51,9 +56,7 @@ public function testGetTestObject(): void
5156 ->withTestActions ()
5257 ->build ();
5358
54- $ resolverMock = new MockModuleResolverBuilder ();
55- $ resolverMock ->setup ();
56- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ mockData );
59+ $ this ->mockTestObjectHandler ($ mockData );
5760
5861 // run object handler method
5962 $ toh = TestObjectHandler::getInstance ();
@@ -146,9 +149,7 @@ public function testGetTestsByGroup(): void
146149 ->withTestActions ()
147150 ->build ();
148151
149- $ resolverMock = new MockModuleResolverBuilder ();
150- $ resolverMock ->setup ();
151- ObjectHandlerUtil::mockTestObjectHandlerWitData (array_merge ($ includeTest , $ excludeTest ));
152+ $ this ->mockTestObjectHandler (array_merge ($ includeTest , $ excludeTest ));
152153
153154 // execute test method
154155 $ toh = TestObjectHandler::getInstance ();
@@ -195,10 +196,8 @@ public function testGetTestWithModuleName(): void
195196 ->withFileName ($ file )
196197 ->build ();
197198
198- $ resolverMock = new MockModuleResolverBuilder ();
199- $ resolverMock ->setup (['Vendor_ ' . $ moduleExpected => $ filepath ]);
199+ $ this ->mockTestObjectHandler ($ mockData , ['Vendor_ ' . $ moduleExpected => $ filepath ]);
200200
201- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ mockData );
202201 // Execute Test Method
203202 $ toh = TestObjectHandler::getInstance ();
204203 $ actualTestObject = $ toh ->getObject ($ testDataArrayBuilder ->testName );
@@ -225,13 +224,11 @@ public function testGetTestObjectWithInvalidExtends(): void
225224 ->withBeforeHook ()
226225 ->withTestActions ()
227226 ->build ();
228- $ resolverMock = new MockModuleResolverBuilder ();
229- $ resolverMock ->setup ();
230- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ testOne );
231227
232- $ toh = TestObjectHandler:: getInstance ( );
228+ $ this -> mockTestObjectHandler ( $ testOne );
233229
234- $ this ->expectException (\Magento \FunctionalTestingFramework \Exceptions \TestFrameworkException::class);
230+ $ toh = TestObjectHandler::getInstance ();
231+ $ this ->expectException (TestFrameworkException::class);
235232 $ this ->expectExceptionMessage ("Mftf Test can not extend from itself: " . "testOne " );
236233
237234 $ toh ->getObject ('testOne ' );
@@ -264,9 +261,7 @@ public function testGetAllTestObjectsWithInvalidExtends(): void
264261 ->withTestActions ()
265262 ->build ();
266263
267- $ resolverMock = new MockModuleResolverBuilder ();
268- $ resolverMock ->setup ();
269- ObjectHandlerUtil::mockTestObjectHandlerWitData (array_merge ($ testOne , $ testTwo ));
264+ $ this ->mockTestObjectHandler (array_merge ($ testOne , $ testTwo ));
270265
271266 $ toh = TestObjectHandler::getInstance ();
272267 $ toh ->getAllObjects ();
@@ -297,9 +292,7 @@ public function testGetTestObjectWhenEnablePause(): void
297292 ->withTestActions ()
298293 ->build ();
299294
300- $ resolverMock = new MockModuleResolverBuilder ();
301- $ resolverMock ->setup ();
302- ObjectHandlerUtil::mockTestObjectHandlerWitData ($ mockData );
295+ $ this ->mockTestObjectHandler ($ mockData );
303296
304297 // run object handler method
305298 $ toh = TestObjectHandler::getInstance ();
@@ -381,4 +374,77 @@ protected function tearDown(): void
381374 TestLoggingUtil::getInstance ()->clearMockLoggingUtil ();
382375 parent ::tearDownAfterClass ();
383376 }
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+ }
384450}
0 commit comments