fileManager = $this->createMock(FileManager::class); $this->module = new Module($this->fileManager); } public function testOrder1(): void { $this->fileManager ->method('getDirList') ->withConsecutive( ['application/Espo/Modules'], ['custom/Espo/Modules'], ) ->willReturnOnConsecutiveCalls( ['M01', 'M02', 'M1', 'M2'], ['M3', 'M4', 'M51', 'M52'], ); $this->fileManager ->method('exists') ->withConsecutive( ['application/Espo/Modules/M01/Resources/module.json'], ['application/Espo/Modules/M02/Resources/module.json'], ['application/Espo/Modules/M1/Resources/module.json'], ['application/Espo/Modules/M2/Resources/module.json'], ['custom/Espo/Modules/M3/Resources/module.json'], ['custom/Espo/Modules/M4/Resources/module.json'], ['custom/Espo/Modules/M51/Resources/module.json'], ['custom/Espo/Modules/M52/Resources/module.json'], ) ->willReturnOnConsecutiveCalls( true, true, true, true, true, true, true, true, ); $this->fileManager ->method('getContents') ->withConsecutive( ['application/Espo/Modules/M01/Resources/module.json'], ['application/Espo/Modules/M02/Resources/module.json'], ['application/Espo/Modules/M1/Resources/module.json'], ['application/Espo/Modules/M2/Resources/module.json'], ['custom/Espo/Modules/M3/Resources/module.json'], ['custom/Espo/Modules/M4/Resources/module.json'], ['custom/Espo/Modules/M51/Resources/module.json'], ['custom/Espo/Modules/M52/Resources/module.json'], ) ->willReturnOnConsecutiveCalls( '{"order": 11}', '{"order": 11}', '{"order": 4}', '{"order": 3}', '{"order": 2}', '{"order": 1}', '{"order": 12}', '{"order": 12}', ); $this->assertEquals( ['M4', 'M3', 'M2', 'M1', 'M01', 'M02', 'M51', 'M52'], $this->module->getOrderedList() ); } }