open-orchestra/open-orchestra-front-bundle

View on GitHub
FrontBundle/Tests/Manager/ErrorPagesManagerTest.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\FrontBundle\Tests\Manager;

use OpenOrchestra\BaseBundle\Tests\AbstractTest\AbstractBaseTestCase;
use Phake;
use OpenOrchestra\FrontBundle\Manager\ErrorPagesManager;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Class ErrorPagesManagerTest
 */
class ErrorPagesManagerTest extends AbstractBaseTestCase
{
    protected $nodeRepository;
    protected $filesystem;
    protected $router;
    protected $encrypter;
    protected $errorPagesManager;

    protected $node;
    protected $nodeCollection;
    protected $crawler;
    protected $fakeHtml = 'fake html';
    protected $nodeName = 'nodeName';

    /**
     * Set up the test
     */
    public function setUp()
    {
        $this->nodeRepository = Phake::mock('OpenOrchestra\ModelInterface\Repository\NodeRepositoryInterface');
        $this->node = Phake::mock('OpenOrchestra\ModelInterface\Model\ReadNodeInterface');
        Phake::when($this->node)->getName()->thenReturn($this->nodeName);
        
        $this->nodeCollection = new ArrayCollection();
        $this->nodeCollection->add($this->node);
        Phake::when($this->nodeRepository)->findPublishedByType(Phake::anyParameters())->thenReturn($this->nodeCollection);

        $this->filesystem = Phake::mock('Symfony\Component\Filesystem\Filesystem');
        $this->router = Phake::mock('Symfony\Component\Routing\Generator\UrlGeneratorInterface');

        $this->client = Phake::mock('Symfony\Component\HttpKernel\Client');
        $this->crawler = Phake::mock('Symfony\Component\DomCrawler\Crawler');
        Phake::when($this->crawler)->html(Phake::anyParameters())->thenReturn($this->fakeHtml);
        Phake::when($this->client)->request(Phake::anyParameters())->thenReturn($this->crawler);

        $this->encrypter = Phake::mock('OpenOrchestra\BaseBundle\Manager\EncryptionManager');

        $this->errorPagesManager = new ErrorPagesManager($this->nodeRepository, $this->filesystem, $this->client, $this->router, $this->encrypter);
    }

    /**
     * Test generateErrorPages
     */
    public function testGenerateErrorPages()
    {
        $alias1 = Phake::mock('OpenOrchestra\ModelInterface\Model\SiteAliasInterface');
        $alias2 = Phake::mock('OpenOrchestra\ModelInterface\Model\SiteAliasInterface');
        $siteId = 'siteId';
        $site = Phake::mock('OpenOrchestra\ModelInterface\Model\ReadSiteInterface');
        Phake::when($site)->getAliases()->thenReturn(array($alias1, $alias2));
        Phake::when($site)->getSiteId()->thenReturn($siteId);

        $files = $this->errorPagesManager->generateErrorPages($site);

        $expectedFile1 = $siteId . '/alias-0/' . $this->nodeName . '.html';
        $expectedFile2 = $siteId . '/alias-1/' . $this->nodeName . '.html';

        Phake::verify($this->filesystem, Phake::times(1))->dumpFile('web/' . $expectedFile1, $this->fakeHtml);
        Phake::verify($this->filesystem, Phake::times(1))->dumpFile('web/' . $expectedFile2, $this->fakeHtml);
        $this->assertSame(array($expectedFile1, $expectedFile2), $files);
    }
}