open-orchestra/open-orchestra-display-bundle

View on GitHub
DisplayBundle/Tests/EventSubscriber/SendMessageSubscriberTest.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\DisplayBundle\Tests\EventSubscriber;

use OpenOrchestra\BaseBundle\Tests\AbstractTest\AbstractBaseTestCase;
use Phake;
use OpenOrchestra\DisplayBundle\EventSubscriber\SendMessageSubscriber;
use OpenOrchestra\DisplayBundle\MailerEvents;
use Symfony\Component\HttpKernel\KernelEvents;

/**
 * Class SendMessageSubscriberTest
 */
class SendMessageSubscriberTest extends AbstractBaseTestCase
{
    /**
     * @var SendMessageSubscriber
     */
    protected $subscriber;

    protected $mailer;

    /**
     * set up the test
     */
    public function setUp()
    {
        $this->mailer = Phake::mock('Swift_Mailer');

        $this->subscriber = new SendMessageSubscriber($this->mailer);
    }

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

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

    /**
     * Test send message
     */
    public function testSendMessage()
    {
        $message = Phake::mock('Swift_Message');

        $event = Phake::mock('OpenOrchestra\DisplayBundle\Event\MailerEvent');
        Phake::when($event)->getMessage()->thenReturn($message);

        $this->subscriber->addMessage($event);
        $this->subscriber->addMessage($event);

        $this->subscriber->sendMessages();
        Phake::verify($this->mailer, Phake::times(2))->send($message);
    }

}