From 47602a5e0b61c421b6b35f0d46bd8945a5ccf4b8 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Sat, 23 Jun 2018 20:27:12 +0200 Subject: [PATCH] TASK: Add test with repository --- Classes/Controller/FrontendUserController.php | 11 ++++++ .../Repository/FrontendUserRepository.php | 27 ++++++++++++++ .../Controller/FrontendUserControllerTest.php | 35 ++++++++++++++++--- 3 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 Classes/Domain/Repository/FrontendUserRepository.php diff --git a/Classes/Controller/FrontendUserController.php b/Classes/Controller/FrontendUserController.php index 909fdf4..c71102d 100644 --- a/Classes/Controller/FrontendUserController.php +++ b/Classes/Controller/FrontendUserController.php @@ -21,6 +21,7 @@ namespace Codappix\TestingTalk\Controller; */ use TYPO3\CMS\Extbase\Domain\Model\FrontendUser; +use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; /** @@ -28,6 +29,16 @@ use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; */ class FrontendUserController extends ActionController { + /** + * @var FrontendUserRepository + */ + protected $frontendUserRepository; + + public function indexAction() + { + $this->view->assign('frontendUsers', $this->frontendUserRepository->findAll()); + } + /** * @param FrontendUser $frontendUser */ diff --git a/Classes/Domain/Repository/FrontendUserRepository.php b/Classes/Domain/Repository/FrontendUserRepository.php new file mode 100644 index 0000000..93bfa3f --- /dev/null +++ b/Classes/Domain/Repository/FrontendUserRepository.php @@ -0,0 +1,27 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +use TYPO3\CMS\Extbase\Persistence\Repository; + +class FrontendUserRepository extends Repository +{ +} diff --git a/Resources/Private/CodeExamples/Tests/Unit/Controller/FrontendUserControllerTest.php b/Resources/Private/CodeExamples/Tests/Unit/Controller/FrontendUserControllerTest.php index 77b64fb..d3ed019 100644 --- a/Resources/Private/CodeExamples/Tests/Unit/Controller/FrontendUserControllerTest.php +++ b/Resources/Private/CodeExamples/Tests/Unit/Controller/FrontendUserControllerTest.php @@ -21,8 +21,10 @@ namespace Codappix\TestingTalkTests\Unit\Controller; */ use Codappix\TestingTalk\Controller\FrontendUserController; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use TYPO3\CMS\Extbase\Domain\Model\FrontendUser; +use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository; use TYPO3\CMS\Extbase\Mvc\View\ViewInterface; use TYPO3\CMS\Extbase\Reflection\ObjectAccess; @@ -33,24 +35,49 @@ class FrontendUserControllerTest extends TestCase */ protected $subject; + /** + * @var MockObject + */ + protected $viewMock; + public function setUp() { $this->subject = new FrontendUserController(); + $this->viewMock = $this->getMockBuilder(ViewInterface::class)->getMock(); + ObjectAccess::setProperty($this->subject, 'view', $this->viewMock, true); } /** * @test */ - public function providedFrontendUserIsAssignedToView() + public function providedFrontendUserIsAssignedToViewInShowAction() { $frontendUserMock = $this->getMockBuilder(FrontendUser::class)->getMock(); - $viewMock = $this->getMockBuilder(ViewInterface::class)->getMock(); - ObjectAccess::setProperty($this->subject, 'view', $viewMock, true); - $viewMock->expects($this->once()) + $this->viewMock->expects($this->once()) ->method('assign') ->with('frontendUser', $frontendUserMock); $this->subject->showAction($frontendUserMock); } + + /** + * @test + */ + public function fetchedFrontendUsersAreAssignedToViewInIndexAction() + { + $frontendUserRepositoryMock = $this->getMockBuilder(FrontendUserRepository::class) + ->disableOriginalConstructor() + ->getMock(); + ObjectAccess::setProperty($this->subject, 'frontendUserRepository', $frontendUserRepositoryMock, true); + $frontendUserRepositoryMock->expects($this->any()) + ->method('findAll') + ->willReturn(['user1' => 'test']); + + $this->viewMock->expects($this->once()) + ->method('assign') + ->with('frontendUsers', ['user1' => 'test']); + + $this->subject->indexAction(); + } }