open-orchestra/open-orchestra-media-admin-bundle

View on GitHub
MediaAdmin/Tests/EventSubscriber/MediaCreatedSubscriberTest.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\MediaAdmin\Tests\EventSubscriber;

use OpenOrchestra\BaseBundle\Tests\AbstractTest\AbstractBaseTestCase;
use OpenOrchestra\MediaAdmin\EventSubscriber\MediaCreatedSubscriber;
use OpenOrchestra\MediaAdmin\MediaEvents;
use Phake;
use Symfony\Component\HttpKernel\KernelEvents;

/**
 * Class MediaCreatedSubscriberTest
 */
class MediaCreatedSubscriberTest extends AbstractBaseTestCase
{
    protected $subscriber;

    protected $fileAlternativesManager;
    protected $documentManager;
    protected $media1;
    protected $media2;
    protected $mediaType = 'TYPE';
    protected $event1;
    protected $event2;

    /**
     * Set Up the test
     */
    public function setUp()
    {
        $this->media1 = Phake::mock('OpenOrchestra\Media\Model\MediaInterface');
        $this->media2 = Phake::mock('OpenOrchestra\Media\Model\MediaInterface');

        $this->event1 = Phake::mock('OpenOrchestra\MediaAdmin\Event\MediaEvent');
        Phake::when($this->event1)->getMedia()->thenReturn($this->media1);

        $this->event2 = Phake::mock('OpenOrchestra\MediaAdmin\Event\MediaEvent');
        Phake::when($this->event2)->getMedia()->thenReturn($this->media2);

        $this->fileAlternativesManager = Phake::mock('OpenOrchestra\MediaAdmin\FileAlternatives\FileAlternativesManager');
        Phake::when($this->fileAlternativesManager)->getMediaType(Phake::anyParameters())->thenReturn($this->mediaType);

        $this->documentManager = Phake::mock('Doctrine\ODM\MongoDB\DocumentManager');

        $this->subscriber = new MediaCreatedSubscriber($this->fileAlternativesManager, $this->documentManager);
    }

    /**
     * test instance
     */
    public function testInstance()
    {
        $this->assertInstanceOf('Symfony\Component\EventDispatcher\EventSubscriberInterface', $this->subscriber);
    }

    /**
     * Test event subscribed
     */
    public function testEventSubscribed()
    {
        $this->assertArrayHasKey(MediaEvents::MEDIA_ADD, $this->subscriber->getSubscribedEvents());
        $this->assertArrayHasKey(KernelEvents::TERMINATE, $this->subscriber->getSubscribedEvents());
    }

    /**
     * Test if method exists
     */
    public function testMethodExists()
    {
        $this->assertTrue(method_exists($this->subscriber, 'addMedia'));
        $this->assertTrue(method_exists($this->subscriber, 'generateAlternatives'));
    }

    public function testAddMedia()
    {
        $this->subscriber->addMedia($this->event1);
        Phake::verify($this->fileAlternativesManager)->getMediaType($this->media1);
        Phake::verify($this->media1)->setMediaType($this->mediaType);
    }

    /**
     * Test addMedia and generateAlternatives
     */
    public function testGenerateAlternatives()
    {
        $this->subscriber->addMedia($this->event1);
        $this->subscriber->addMedia($this->event2);
        $this->subscriber->generateAlternatives();

        Phake::verify($this->fileAlternativesManager)->generateThumbnail($this->media1);
        Phake::verify($this->fileAlternativesManager)->generateThumbnail($this->media2);
        Phake::verify($this->fileAlternativesManager)->generateAlternatives($this->media1);
        Phake::verify($this->fileAlternativesManager)->generateAlternatives($this->media2);
        Phake::verify($this->documentManager)->flush();
    }

    /**
     * Test not flush, empty medias
     */
    public function testNotFlushEmptyMedia()
    {
        $this->subscriber->generateAlternatives();
        Phake::verify($this->documentManager, Phake::never())->flush();
    }
}