getMockBuilder(PackageInterface::class)->getMock(); $default->expects(self::exactly($packagesGetUrlCount))->method('getUrl')->willReturnCallback(function ($argument) { return 'http://www.example.com/' . $argument; }); $service = $this->getMockBuilder(AvatarService::class)->disableOriginalConstructor()->getMock(); $packages = new Packages(); $packages->setDefaultPackage($default); return new AvatarExtension($service, $packages); } public function testGetFunctions() { $functions = ['avatar']; $sut = $this->getSut(0); $twigFunctions = $sut->getFunctions(); self::assertCount(\count($functions), $twigFunctions); $i = 0; /** @var TwigFunction $filter */ foreach ($twigFunctions as $filter) { self::assertInstanceOf(TwigFunction::class, $filter); self::assertEquals($functions[$i++], $filter->getName()); } } public function testGetAvatarWithoutUserReturnsDefault() { $sut = $this->getSut(1); self::assertEquals('http://www.example.com/blub', $sut->getAvatarUrl(null, 'blub')); } public function testGetAvatarWithUserProfileReturnsNullOnNullFromAvatarService() { $sut = $this->getSut(1); $user = new User(); self::assertEquals('http://www.example.com/test', $sut->getAvatarUrl($user, 'test')); } }