public function testCreateWithLegacyMode($mode, array $expected)
{
$path = $this->getRootDir() . '/images/none.jpg';
$imageMock = $this->getMockBuilder('Contao\\Image\\Image')->disableOriginalConstructor()->getMock();
$filesystem = $this->getMock('Symfony\\Component\\Filesystem\\Filesystem');
$filesystem->expects($this->once())->method('exists')->willReturn(true);
$resizer = $this->getMockBuilder('Contao\\Image\\Resizer')->disableOriginalConstructor()->getMock();
$resizer->expects($this->once())->method('resize')->with($this->callback(function ($image) use($path, $expected) {
/* @var Image $image */
$this->assertEquals($path, $image->getPath());
$this->assertEquals(new ImportantPart(new Point($expected[0], $expected[1]), new Box($expected[2], $expected[3])), $image->getImportantPart());
return true;
}), $this->callback(function ($config) {
/* @var ResizeConfiguration $config */
$this->assertEquals(50, $config->getWidth());
$this->assertEquals(50, $config->getHeight());
$this->assertEquals(ResizeConfiguration::MODE_CROP, $config->getMode());
$this->assertEquals(0, $config->getZoomLevel());
return true;
}))->willReturn($imageMock);
$imagineImageMock = $this->getMock('Imagine\\Image\\ImageInterface');
$imagineImageMock->expects($this->once())->method('getSize')->willReturn(new Box(100, 100));
$imagine = $this->getMock('Imagine\\Image\\ImagineInterface');
$imagine->expects($this->once())->method('open')->willReturn($imagineImageMock);
$framework = $this->getMockBuilder('Contao\\CoreBundle\\Framework\\ContaoFramework')->disableOriginalConstructor()->getMock();
$filesModel = $this->getMock('Contao\\FilesModel');
$filesModel->expects($this->any())->method('__get')->will($this->returnCallback(function ($key) {
return ['importantPartX' => '50', 'importantPartY' => '50', 'importantPartWidth' => '25', 'importantPartHeight' => '25'][$key];
}));
$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, $filesystem, $framework);
$image = $imageFactory->create($path, [50, 50, $mode]);
$this->assertSame($imageMock, $image);
}