fileManager = $this->createMock(FileManager::class); $this->injectableFactory = $this->createMock(InjectableFactory::class); $this->fileReader = $this->createMock(FileReader::class); $metadata = $this->createMock(Metadata::class); $this->layout = new LayoutProvider( $this->fileManager, $this->injectableFactory, $metadata, $this->fileReader ); } public function testGet1(): void { $this->fileReader ->expects($this->once()) ->method('exists') ->with( 'layouts/Test/test.json', $this->callback( function (FileReaderParams $params): bool { return $params->getScope() === 'Test'; } ) ) ->willReturn(true); $this->fileReader ->expects($this->once()) ->method('read') ->with( 'layouts/Test/test.json', $this->callback( function (FileReaderParams $params): bool { return $params->getScope() === 'Test'; } ) ) ->willReturn('["test"]'); $result = $this->layout->get('Test', 'test'); $this->assertEquals('["test"]', $result); } public function testGetDefault(): void { $this->fileReader ->expects($this->once()) ->method('exists') ->with( 'layouts/Test/test.json', $this->callback( function (FileReaderParams $params): bool { return $params->getScope() === 'Test'; } ) ) ->willReturn(false); $this->fileManager ->expects($this->once()) ->method('isFile') ->with('application/Espo/Resources/defaults/layouts/test.json') ->willReturn(true); $this->fileManager ->expects($this->once()) ->method('getContents') ->with('application/Espo/Resources/defaults/layouts/test.json') ->willReturn('["test"]'); $result = $this->layout->get('Test', 'test'); $this->assertEquals('["test"]', $result); } }