open-orchestra/open-orchestra-cms-bundle

View on GitHub
LogBundle/Tests/EventSubscriber/LogSiteSubscriberTest.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\LogBundle\Tests\EventSubscriber;

use Phake;
use OpenOrchestra\LogBundle\EventSubscriber\LogSiteSubscriber;
use OpenOrchestra\ModelInterface\SiteEvents;

/**
 * Class LogSiteSubscriberTest
 */
class LogSiteSubscriberTest extends LogAbstractSubscriberTest
{
    protected $site;
    protected $siteEvent;

    /**
     * Set up the test
     */
    public function setUp()
    {
        parent::setUp();
        $this->site = Phake::mock('OpenOrchestra\ModelBundle\Document\Site');
        $this->siteEvent = Phake::mock('OpenOrchestra\ModelInterface\Event\SiteEvent');
        Phake::when($this->siteEvent)->getSite()->thenReturn($this->site);

        $this->subscriber = new LogSiteSubscriber($this->logger);
    }

    /**
     * @return array
     */
    public function provideSubscribedEvent()
    {
        return array(
            array(SiteEvents::SITE_CREATE),
            array(SiteEvents::SITE_DELETE),
            array(SiteEvents::SITE_UPDATE),
        );
    }

    /**
     * Test siteCreate
     */
    public function testSiteCreate()
    {
        $this->subscriber->siteCreate($this->siteEvent);
        $this->assertEventLogged('open_orchestra_log.site.create', array(
            'site_id' => $this->site->getSiteId(),
            'site_name' => $this->site->getName()
        ));
    }

    /**
     * Test siteDelete
     */
    public function testSiteDelete()
    {
        $this->subscriber->siteDelete($this->siteEvent);
        $this->assertEventLogged('open_orchestra_log.site.delete', array(
            'site_id' => $this->site->getSiteId(),
            'site_name' => $this->site->getName()
        ));
    }

    /**
     * Test siteUpdate
     */
    public function testSiteUpdate()
    {
        $this->subscriber->siteUpdate($this->siteEvent);
        $this->assertEventLogged('open_orchestra_log.site.update', array(
            'site_id' => $this->site->getSiteId(),
            'site_name' => $this->site->getName()
        ));
    }

    /**
     * Test the siteEvent
     */
    public function eventTest()
    {
        Phake::verify($this->siteEvent)->getSite();
        Phake::verify($this->logger)->info(Phake::anyParameters());
        Phake::verify($this->site)->getSiteId();
    }
}