public function testExecuteResizeHook()
{
define('TL_ROOT', $this->getRootDir());
$GLOBALS['TL_CONFIG']['validImageTypes'] = 'jpg';
$path = $this->getRootDir() . '/images/dummy.jpg';
$resizer = new LegacyResizer($this->getRootDir() . '/assets/images', new ResizeCalculator());
$imagine = new Imagine();
$framework = $this->getMockBuilder('Contao\\CoreBundle\\Framework\\ContaoFramework')->disableOriginalConstructor()->getMock();
$filesModel = $this->getMock('Contao\\FilesModel');
$filesAdapter = $this->getMockBuilder('Contao\\CoreBundle\\Framework\\Adapter')->disableOriginalConstructor()->getMock();
$filesAdapter->expects($this->any())->method('__call')->willReturn($filesModel);
$framework->expects($this->any())->method('getAdapter')->willReturn($filesAdapter);
$imageFactory = $this->createImageFactory($resizer, $imagine, $imagine, null, $framework);
$GLOBALS['TL_HOOKS'] = ['executeResize' => [[get_class($this), 'executeResizeHookCallback']]];
$image = $imageFactory->create($path, [100, 100, ResizeConfiguration::MODE_CROP]);
$this->assertEquals($this->getRootDir() . '/assets/images/dummy.jpg&executeResize_100_100_crop__Contao-Image.jpg', $image->getPath());
$image = $imageFactory->create($path, [200, 200, ResizeConfiguration::MODE_CROP]);
$this->assertEquals($this->getRootDir() . '/assets/images/dummy.jpg&executeResize_200_200_crop__Contao-Image.jpg', $image->getPath());
$image = $imageFactory->create($path, [200, 200, ResizeConfiguration::MODE_CROP], $this->getRootDir() . '/target.jpg');
$this->assertEquals($this->getRootDir() . '/assets/images/dummy.jpg&executeResize_200_200_crop_target.jpg_Contao-Image.jpg', $image->getPath());
unset($GLOBALS['TL_HOOKS']);
}