translator = $this->getTranslatorMock(); } public function testImage() { $xml = ' /home/datas/noweb/db_alch_phrasea/subdefs/ yes image 1000 150 no 75 '; $type = new Type\Image(); $object = new databox_subdef($type, simplexml_load_string($xml), $this->translator); $this->assertEquals(databox_subdef::CLASS_PREVIEW, $object->get_class()); $this->assertEquals('/home/datas/noweb/db_alch_phrasea/subdefs/', $object->get_path()); $this->assertInstanceOf(Subdef\Subdef::class, $object->getSubdefType()); $this->assertEquals($type, $object->getSubdefGroup()); $labels = $object->get_labels(); $this->assertTrue(is_array($labels)); $this->assertArrayHasKey('fr', $labels); $this->assertEquals('Prévisualisation', $labels['fr']); $this->assertArrayHasKey('en', $labels); $this->assertEquals('Preview', $labels['en']); $this->assertTrue($object->isDownloadable()); $this->assertTrue(is_array($object->getAvailableSubdefTypes())); $this->assertTrue(count($object->getAvailableSubdefTypes()) > 0); foreach ($object->getAvailableSubdefTypes() as $type) { $this->assertInstanceOf(Subdef\Image::class, $type); } $this->assertTrue($object->isMetadataUpdateRequired()); $this->assertEquals('preview_api', $object->get_name()); $this->assertInstanceOf(Specification\Image::class, $object->getSpecs()); $options = $object->getOptions(); $this->assertTrue(is_array($options)); foreach ($options as $option) { $this->assertInstanceOf(OptionType::class, $option); } } public function testVideo() { $xml = ' /home/datas/noweb/db_alch_phrasea/video/ no video 196 72 yes 75 10 1 192 libfaac libx264 '; $type = new \Alchemy\Phrasea\Media\Type\Video(); $object = new databox_subdef($type, simplexml_load_string($xml), $this->translator); $this->assertEquals(databox_subdef::CLASS_THUMBNAIL, $object->get_class()); $this->assertEquals('/home/datas/noweb/db_alch_phrasea/video/', $object->get_path()); $this->assertInstanceOf(Subdef\Subdef::class, $object->getSubdefType()); $this->assertEquals($type, $object->getSubdefGroup()); $labels = $object->get_labels(); $this->assertTrue(is_array($labels)); $this->assertEquals(0, count($labels)); $this->assertFalse($object->isDownloadable()); $this->assertTrue(is_array($object->getAvailableSubdefTypes())); $this->assertTrue(count($object->getAvailableSubdefTypes()) > 0); foreach ($object->getAvailableSubdefTypes() as $type) { $this->assertInstanceOf(Subdef\Subdef::class, $type); } $this->assertFalse($object->isMetadataUpdateRequired()); $this->assertEquals('video_api', $object->get_name()); $this->assertInstanceOf(Specification\Video::class, $object->getSpecs()); $options = $object->getOptions(); $this->assertTrue(is_array($options)); foreach ($options as $option) { $this->assertInstanceOf(OptionType::class, $option); } } public function testGif() { $xml = ' /home/datas/noweb/db_alch_phrasea/video/ no gif 200 yes 100 '; $type = new \Alchemy\Phrasea\Media\Type\Video(); $object = new databox_subdef($type, simplexml_load_string($xml), $this->translator); $this->assertInstanceOf(Specification\Animation::class, $object->getSpecs()); $options = $object->getOptions(); $this->assertTrue(is_array($options)); foreach ($options as $option) { $this->assertInstanceOf(OptionType::class, $option); } } public function testAudio() { $xml = ' /home/datas/noweb/db_alch_phrasea/video/ audio '; $type = new \Alchemy\Phrasea\Media\Type\Audio(); $object = new databox_subdef($type, simplexml_load_string($xml), $this->translator); $this->assertInstanceOf(Specification\Audio::class, $object->getSpecs()); $options = $object->getOptions(); $this->assertTrue(is_array($options)); foreach ($options as $option) { $this->assertInstanceOf(OptionType::class, $option); } } public function testFlexPaper() { $xml = ' /home/datas/noweb/db_alch_phrasea/video/ flexpaper '; $type = new \Alchemy\Phrasea\Media\Type\Flash(); $object = new databox_subdef($type, simplexml_load_string($xml), $this->translator); $this->assertInstanceOf(Specification\Flash::class, $object->getSpecs()); $options = $object->getOptions(); $this->assertTrue(is_array($options)); foreach ($options as $option) { $this->assertInstanceOf(OptionType::class, $option); } } /** * @dataProvider getVariouasTypeAndSubdefs */ public function testGetAvailableSubdefTypes($object) { foreach ($object->getAvailableSubdefTypes() as $type) { $this->assertInstanceOf(Subdef\Subdef::class, $type); } } public function getVariouasTypeAndSubdefs() { $xmlImage = ' /home/datas/noweb/db_alch_phrasea/video/ image '; $translator = $this->getTranslatorMock(); return [ [new databox_subdef(new Type\Audio(), simplexml_load_string($xmlImage), $translator)], [new databox_subdef(new Type\Document(), simplexml_load_string($xmlImage), $translator)], [new databox_subdef(new Type\Video(), simplexml_load_string($xmlImage), $translator)], ]; } /** * @param bool $expected * @param null|string $configValue * @dataProvider providesOrderableStatuses */ public function testOrderableStatus($expected, $configValue, $message) { $xmlTemplate = <<<'EOF' /home/datas/noweb/db_alch_phrasea/video/ image EOF; if (null !== $configValue) { $configValue = ' orderable="' . $configValue . '"'; } $xml = sprintf($xmlTemplate, $configValue ?: ''); $sut = new databox_subdef(new Type\Image(), simplexml_load_string($xml), $this->translator); $this->assertSame($expected, $sut->isOrderable(), $message); } public function providesOrderableStatuses() { return [ [true, null, 'No Orderable Status set should defaults to true'], [false, 'false', 'Orderable should be false'], [true, 'true', 'Orderable should be true'], ]; } /** * @return PHPUnit_Framework_MockObject_MockObject|TranslatorInterface */ private function getTranslatorMock() { return $this->getMock(TranslatorInterface::class); } }