NcTestobjControllerTest.php 4.49 KB
<?php
namespace Netzcoop\Anctestextension\Tests\Unit\Controller;

/**
 * Test case.
 */
class NcTestobjControllerTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
{
    /**
     * @var \Netzcoop\Anctestextension\Controller\NcTestobjController
     */
    protected $subject = null;

    protected function setUp()
    {
        parent::setUp();
        $this->subject = $this->getMockBuilder(\Netzcoop\Anctestextension\Controller\NcTestobjController::class)
            ->setMethods(['redirect', 'forward', 'addFlashMessage'])
            ->disableOriginalConstructor()
            ->getMock();
    }

    protected function tearDown()
    {
        parent::tearDown();
    }

    /**
     * @test
     */
    public function listActionFetchesAllNcTestobjsFromRepositoryAndAssignsThemToView()
    {

        $allNcTestobjs = $this->getMockBuilder(\TYPO3\CMS\Extbase\Persistence\ObjectStorage::class)
            ->disableOriginalConstructor()
            ->getMock();

        $ncTestobjRepository = $this->getMockBuilder(\Netzcoop\Anctestextension\Domain\Repository\NcTestobjRepository::class)
            ->setMethods(['findAll'])
            ->disableOriginalConstructor()
            ->getMock();
        $ncTestobjRepository->expects(self::once())->method('findAll')->will(self::returnValue($allNcTestobjs));
        $this->inject($this->subject, 'ncTestobjRepository', $ncTestobjRepository);

        $view = $this->getMockBuilder(\TYPO3\CMS\Extbase\Mvc\View\ViewInterface::class)->getMock();
        $view->expects(self::once())->method('assign')->with('ncTestobjs', $allNcTestobjs);
        $this->inject($this->subject, 'view', $view);

        $this->subject->listAction();
    }

    /**
     * @test
     */
    public function showActionAssignsTheGivenNcTestobjToView()
    {
        $ncTestobj = new \Netzcoop\Anctestextension\Domain\Model\NcTestobj();

        $view = $this->getMockBuilder(\TYPO3\CMS\Extbase\Mvc\View\ViewInterface::class)->getMock();
        $this->inject($this->subject, 'view', $view);
        $view->expects(self::once())->method('assign')->with('ncTestobj', $ncTestobj);

        $this->subject->showAction($ncTestobj);
    }

    /**
     * @test
     */
    public function createActionAddsTheGivenNcTestobjToNcTestobjRepository()
    {
        $ncTestobj = new \Netzcoop\Anctestextension\Domain\Model\NcTestobj();

        $ncTestobjRepository = $this->getMockBuilder(\Netzcoop\Anctestextension\Domain\Repository\NcTestobjRepository::class)
            ->setMethods(['add'])
            ->disableOriginalConstructor()
            ->getMock();

        $ncTestobjRepository->expects(self::once())->method('add')->with($ncTestobj);
        $this->inject($this->subject, 'ncTestobjRepository', $ncTestobjRepository);

        $this->subject->createAction($ncTestobj);
    }

    /**
     * @test
     */
    public function editActionAssignsTheGivenNcTestobjToView()
    {
        $ncTestobj = new \Netzcoop\Anctestextension\Domain\Model\NcTestobj();

        $view = $this->getMockBuilder(\TYPO3\CMS\Extbase\Mvc\View\ViewInterface::class)->getMock();
        $this->inject($this->subject, 'view', $view);
        $view->expects(self::once())->method('assign')->with('ncTestobj', $ncTestobj);

        $this->subject->editAction($ncTestobj);
    }

    /**
     * @test
     */
    public function updateActionUpdatesTheGivenNcTestobjInNcTestobjRepository()
    {
        $ncTestobj = new \Netzcoop\Anctestextension\Domain\Model\NcTestobj();

        $ncTestobjRepository = $this->getMockBuilder(\Netzcoop\Anctestextension\Domain\Repository\NcTestobjRepository::class)
            ->setMethods(['update'])
            ->disableOriginalConstructor()
            ->getMock();

        $ncTestobjRepository->expects(self::once())->method('update')->with($ncTestobj);
        $this->inject($this->subject, 'ncTestobjRepository', $ncTestobjRepository);

        $this->subject->updateAction($ncTestobj);
    }

    /**
     * @test
     */
    public function deleteActionRemovesTheGivenNcTestobjFromNcTestobjRepository()
    {
        $ncTestobj = new \Netzcoop\Anctestextension\Domain\Model\NcTestobj();

        $ncTestobjRepository = $this->getMockBuilder(\Netzcoop\Anctestextension\Domain\Repository\NcTestobjRepository::class)
            ->setMethods(['remove'])
            ->disableOriginalConstructor()
            ->getMock();

        $ncTestobjRepository->expects(self::once())->method('remove')->with($ncTestobj);
        $this->inject($this->subject, 'ncTestobjRepository', $ncTestobjRepository);

        $this->subject->deleteAction($ncTestobj);
    }
}