* @link https://www.oxidmodule.com */ declare(strict_types=1); namespace D3\Usermanager\tests\unit\Application\Controller\Admin; use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod; use D3\ModCfg\Application\Model\d3filesystem; use D3\ModCfg\Application\Model\d3str; use D3\ModCfg\Application\Model\Exception\wrongModIdException; use D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs; use D3\Usermanager\Application\Model\d3usermanager; use D3\Usermanager\Application\Model\d3usermanager_configurationcheck; use D3\Usermanager\Application\Model\d3usermanager_execute; use D3\Usermanager\Application\Model\d3usermanager_touserassignment; use D3\Usermanager\Application\Model\d3usermanagerlist; use D3\Usermanager\Application\Model\Exceptions\d3usermanager_requirementException; use D3\Usermanager\Application\Model\Exceptions\d3usermanager_smartyException; use D3\Usermanager\Application\Model\Exceptions\d3usermanager_templaterendererExceptionInterface; use D3\Usermanager\tests\unit\d3UsermanagerUnitTestCase; use Exception; use OxidEsales\Eshop\Application\Model\User; use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; use OxidEsales\Eshop\Core\Exception\DatabaseErrorException; use OxidEsales\Eshop\Core\Language; use OxidEsales\Eshop\Core\Session; use OxidEsales\Eshop\Core\Model\ListModel; use OxidEsales\Eshop\Core\UtilsView; use PHPUnit\Framework\MockObject\MockObject; use ReflectionException; use stdClass; /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs */ class d3_usermanager_jobsTest extends d3UsermanagerUnitTestCase { /** @var d3_usermanager_jobs */ protected $_oController; /** * setup basic requirements * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws Exception */ public function setUp(): void { parent::setUp(); $this->_oController = d3GetOxidDIC()->get(d3_usermanager_jobs::class); } public function tearDown(): void { parent::tearDown(); unset($this->_oController); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::__construct * @test */ public function constructorPass() { $this->assertSame( 'd3usermanager', d3GetOxidDIC()->getParameter('d3.usermanager.modcfgid') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::__construct * @test */ public function constructorException() { /** @var d3_usermanager_jobs|MockObject $controller */ $controller = $this->getMockBuilder(d3_usermanager_jobs::class) ->disableOriginalConstructor() ->getMock(); d3GetOxidDIC()->setParameter('d3.usermanager.modcfgid', 'differentModCfgid'); $this->expectException(wrongModIdException::class); $this->callMethod( $controller, '__construct' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::getItemObject * @test * @throws ReflectionException */ public function getItemObjectReturnsRightInstance() { $this->assertInstanceOf( User::class, $this->callMethod($this->_oController, 'getItemObject') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3GetSession * @test * @throws ReflectionException */ public function getSessionReturnsRightInstance() { $this->assertInstanceOf( Session::class, $this->callMethod($this->_oController, 'd3GetSession') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::render * @test * @throws ReflectionException */ public function renderPass() { /** @var d3usermanagerlist|MockObject $oManagerListMock */ $oManagerListMock = $this->getMockBuilder(d3usermanagerlist::class) ->disableOriginalConstructor() ->getMock(); /** @var User|MockObject $oItemMock */ $oItemMock = $this->getMockBuilder(User::class) ->onlyMethods(['load']) ->getMock(); $oItemMock->expects($this->once())->method('load')->willReturn(true); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getEditObjectId', 'getItemObject', '_d3GetManuallyManagerJobs', ]) ->getMock(); $oControllerMock->method('getEditObjectId')->willReturn('testOxId'); $oControllerMock->method('getItemObject')->willReturn($oItemMock); $oControllerMock->method('_d3GetManuallyManagerJobs')->willReturn($oManagerListMock); $this->_oController = $oControllerMock; $this->assertStringContainsStringIgnoringCase( '@d3usermanager/admin/d3_usermanager_jobs', $this->callMethod($this->_oController, 'render') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::changeFolder * @test * @throws ReflectionException */ public function canChangeFolder() { $_POST['jobfolder'] = 'newSelectedFolder'; /** @var Session|MockObject $oSessionMock */ $oSessionMock = $this->getMockBuilder(Session::class) ->onlyMethods(['setVariable']) ->getMock(); $oSessionMock->expects($this->once())->method('setVariable')->willReturn(true); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods(['d3GetSession']) ->getMock(); $oControllerMock->method('d3GetSession')->willReturn($oSessionMock); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'changeFolder' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::getManagerList * @test * @throws ReflectionException */ public function getManagerListReturnsRightInstance() { $this->assertInstanceOf( d3usermanagerlist::class, $this->callMethod($this->_oController, 'getManagerList') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3GetManagerJobs * @test * @throws ReflectionException */ public function canGetManagerJobs() { /** @var d3usermanagerlist|MockObject $oManagerListMock */ $oManagerListMock = $this->getMockBuilder(d3usermanagerlist::class) ->onlyMethods(['getList']) ->getMock(); $oManagerListMock->expects($this->once())->method('getList')->willReturn(true); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods(['getManagerList']) ->getMock(); $oControllerMock->method('getManagerList')->willReturn($oManagerListMock); $this->_oController = $oControllerMock; $this->assertInstanceOf( d3usermanagerlist::class, $this->callMethod($this->_oController, 'd3GetManagerJobs') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::_d3GetManuallyManagerJobs * @test * @throws ReflectionException * @throws Exception */ public function canGetManuallyExecutableManagerJobsNoConditionCheck() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods(['getValue']) ->getMock(); $oManagerMock->method('getValue')->willReturn(false); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods(['userMeetsConditions']) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(true); /** @var d3usermanagerlist|MockObject $oManagerListMock */ $oManagerListMock = $this->getMockBuilder(d3usermanagerlist::class) ->onlyMethods(['d3GetManuallyManagerJobsByFolder', 'offsetUnset']) ->getMock(); $oManagerListMock->expects($this->once())->method('d3GetManuallyManagerJobsByFolder')->willReturnSelf(); $oManagerListMock->expects($this->never())->method('offsetUnset'); $oManagerListMock->offsetSet('No1', $oManagerMock); $oManagerListMock->offsetSet('No2', $oManagerMock); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManagerList', 'getManagerExecute', ]) ->getMock(); $oControllerMock->method('getManagerList')->willReturn($oManagerListMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $generatedList = $this->callMethod( $this->_oController, '_d3GetManuallyManagerJobs', ['sTestFolderId'] ); $this->assertInstanceOf( ListModel::class, $generatedList ); $this->assertCount(2, $generatedList); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::_d3GetManuallyManagerJobs * @test * @throws ReflectionException * @throws Exception */ public function canGetManuallyExecutableManagerJobsConditionCheckPass() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods(['getValue']) ->getMock(); $oManagerMock->method('getValue')->willReturn(false); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods(['userMeetsConditions']) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->method('userMeetsConditions')->will($this->onConsecutiveCalls(false, true)); /** @var d3usermanagerlist|MockObject $oManagerListMock */ $oManagerListMock = $this->getMockBuilder(d3usermanagerlist::class) ->onlyMethods(['d3GetManuallyManagerJobsByFolder', 'offsetUnset']) ->getMock(); $oManagerListMock->expects($this->once())->method('d3GetManuallyManagerJobsByFolder')->willReturnSelf(); $oManagerListMock->expects($this->never())->method('offsetUnset'); $oManagerListMock->offsetSet('No1', $oManagerMock); $oManagerListMock->offsetSet('No2', $oManagerMock); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManagerList', 'getManagerExecute', ]) ->getMock(); $oControllerMock->method('getManagerList')->willReturn($oManagerListMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $generatedList = $this->callMethod( $this->_oController, '_d3GetManuallyManagerJobs', ['sTestFolderId'] ); $this->assertInstanceOf( ListModel::class, $generatedList ); $this->assertCount(2, $generatedList); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::_d3GetManuallyManagerJobs * @test * @throws ReflectionException * @throws Exception */ public function canGetManuallyExecutableManagerJobsConditionCheckFailed() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods(['getValue']) ->getMock(); $oManagerMock->method('getValue')->willReturn(true); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods(['userMeetsConditions']) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->method('userMeetsConditions')->will($this->onConsecutiveCalls(false, true)); /** @var d3usermanagerlist|MockObject $oManagerListMock */ $oManagerListMock = $this->getMockBuilder(d3usermanagerlist::class) ->onlyMethods(['d3GetManuallyManagerJobsByFolder', 'offsetUnset']) ->getMock(); $oManagerListMock->expects($this->once())->method('d3GetManuallyManagerJobsByFolder')->willReturnSelf(); $oManagerListMock->expects($this->once())->method('offsetUnset'); $oManagerListMock->offsetSet('No1', $oManagerMock); $oManagerListMock->offsetSet('No2', $oManagerMock); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManagerList', 'getManagerExecute', ]) ->getMock(); $oControllerMock->method('getManagerList')->willReturn($oManagerListMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $generatedList = $this->callMethod( $this->_oController, '_d3GetManuallyManagerJobs', ['sTestFolderId'] ); $this->assertInstanceOf( ListModel::class, $generatedList ); // offsetUnset doesn't work, because it's mocked // $this->assertCount(1, $generatedList); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::_d3GetManuallyManagerJobs * @test * @throws ReflectionException * @throws Exception */ public function cannotGetManuallyExecutableManagerJobsBecauseUnvalidConfiguration() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods(['getValue']) ->getMock(); $oManagerMock->method('getValue')->willReturn(true); /** @var d3usermanager_requirementException|MockObject $exception */ $exception = $this->getMockBuilder(d3usermanager_requirementException::class) ->disableOriginalConstructor() ->getMock(); /** @var UtilsView|MockObject $utilsViewMock */ $utilsViewMock = $this->getMockBuilder(UtilsView::class) ->onlyMethods(['addErrorToDisplay']) ->getMock(); $utilsViewMock->expects($this->atLeastOnce())->method('addErrorToDisplay')->willReturn(true); d3GetOxidDIC()->set('d3ox.usermanager.'.UtilsView::class, $utilsViewMock); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->addMethods(['orderMeetsConditions']) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->method('orderMeetsConditions')->willThrowException($exception); /** @var d3usermanagerlist|MockObject $oManagerListMock */ $oManagerListMock = $this->getMockBuilder(d3usermanagerlist::class) ->onlyMethods(['d3GetManuallyManagerJobsByFolder', 'offsetUnset']) ->getMock(); $oManagerListMock->expects($this->once())->method('d3GetManuallyManagerJobsByFolder')->willReturnSelf(); $oManagerListMock->expects($this->never())->method('offsetUnset'); $oManagerListMock->offsetSet('No1', $oManagerMock); $oManagerListMock->offsetSet('No2', $oManagerMock); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManagerList', 'getManagerExecute', ]) ->getMock(); $oControllerMock->method('getManagerList')->willReturn($oManagerListMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $generatedList = $this->callMethod( $this->_oController, '_d3GetManuallyManagerJobs', ['sTestFolderId'] ); $this->assertInstanceOf( ListModel::class, $generatedList ); $this->assertEmpty($generatedList); // offsetUnset doesn't work, because it's mocked // $this->assertCount(1, $generatedList); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3GetJobList * @test * @throws ReflectionException */ public function canGetJobList() { $aArray = [ '1' => '2', ]; /** @var ListModel|MockObject $oJobListMock */ $oJobListMock = $this->getMockBuilder(ListModel::class) ->onlyMethods(['getArray']) ->getMock(); $oJobListMock->method('getArray')->willReturn($aArray); $this->setValue($this->_oController, '_aJobList', $oJobListMock); $this->assertSame( $aArray, $this->callMethod( $this->_oController, 'd3GetJobList' ) ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::getManager * @test * @throws ReflectionException */ public function getManagerReturnsRightInstance() { $this->assertInstanceOf( d3usermanager::class, $this->callMethod($this->_oController, 'getManager') ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::getManagerExecute * @test * @throws ReflectionException * @throws Exception */ public function getManagerExecuteReturnsRightInstance() { $this->assertInstanceOf( d3usermanager_execute::class, $this->callMethod( $this->_oController, 'getManagerExecute', [d3GetOxidDIC()->get(d3usermanager::class)] ) ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3execusermanager * @test * @throws ReflectionException */ public function usermanagerStartExecutionNoConditionCheck() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'setEditedValues', 'getValue', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->never())->method('setEditedValues'); $oManagerMock->method('getValue')->willReturn(false); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods([ 'exec4user', 'finishJobExecution', 'userMeetsConditions', ]) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->expects($this->once())->method('exec4user'); $oManagerExecuteMock->expects($this->once())->method('finishJobExecution'); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(false); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getManagerExecute', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3execusermanager' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3execusermanager * @test * @throws ReflectionException */ public function usermanagerStartExecutionConditionCheckPass() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'setEditedValues', 'getValue', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->never())->method('setEditedValues'); $oManagerMock->method('getValue')->willReturn(true); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods([ 'exec4user', 'finishJobExecution', 'userMeetsConditions', ]) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->expects($this->once())->method('exec4user'); $oManagerExecuteMock->expects($this->once())->method('finishJobExecution'); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(true); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getManagerExecute', 'checkForConfigurationException', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3execusermanager' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3execusermanager * @test * @param $exceptionClass * @throws ReflectionException * @dataProvider cannotExecChangedContentsBecauseOfExceptionDataProvider */ public function usermanagerStartExecutionConditionCheckFailed($exceptionClass) { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'setEditedValues', 'getValue', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->never())->method('setEditedValues'); $oManagerMock->method('getValue')->willReturn(true); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods([ 'exec4user', 'finishJobExecution', 'userMeetsConditions', ]) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->expects($this->never())->method('exec4user'); $oManagerExecuteMock->expects($this->never())->method('finishJobExecution'); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(false); /** @var d3usermanager_requirementException|d3usermanager_templaterendererExceptionInterface|MockObject $exception */ $exception = $this->getMockBuilder($exceptionClass) ->disableOriginalConstructor() ->getMock(); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getManagerExecute', 'checkForConfigurationException', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $oControllerMock->method('checkForConfigurationException')->willThrowException($exception); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3execusermanager' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3ExecChangedUserManager * @test * @throws ReflectionException */ public function changedUsermanagerStartExecutionNoConditionCheck() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'setEditedValues', 'getValue', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->once())->method('setEditedValues'); $oManagerMock->method('getValue')->willReturn(false); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods([ 'exec4user', 'finishJobExecution', 'userMeetsConditions', ]) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->expects($this->once())->method('exec4user'); $oManagerExecuteMock->expects($this->once())->method('finishJobExecution'); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(false); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getManagerExecute', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3ExecChangedUserManager' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3ExecChangedUserManager * @test * @throws ReflectionException */ public function changedUsermanagerStartExecutionConditionCheckPass() { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'setEditedValues', 'getValue', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->once())->method('setEditedValues'); $oManagerMock->method('getValue')->willReturn(true); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods([ 'exec4user', 'finishJobExecution', 'userMeetsConditions', ]) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->expects($this->once())->method('exec4user'); $oManagerExecuteMock->expects($this->once())->method('finishJobExecution'); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(true); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getManagerExecute', 'checkForConfigurationException', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3ExecChangedUserManager' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3ExecChangedUserManager * @test * @param $exceptionClass * @throws ReflectionException * @dataProvider cannotExecChangedContentsBecauseOfExceptionDataProvider */ public function changedUsermanagerStartExecutionConditionCheckFailed($exceptionClass) { /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'setEditedValues', 'getValue', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->once())->method('setEditedValues'); $oManagerMock->method('getValue')->willReturn(true); /** @var d3usermanager_execute|MockObject $oManagerExecuteMock */ $oManagerExecuteMock = $this->getMockBuilder(d3usermanager_execute::class) ->onlyMethods([ 'exec4user', 'finishJobExecution', 'userMeetsConditions', ]) ->setConstructorArgs([$oManagerMock]) ->getMock(); $oManagerExecuteMock->expects($this->never())->method('exec4user'); $oManagerExecuteMock->expects($this->never())->method('finishJobExecution'); $oManagerExecuteMock->method('userMeetsConditions')->willReturn(false); /** @var d3usermanager_requirementException|d3usermanager_templaterendererExceptionInterface|MockObject $exception */ $exception = $this->getMockBuilder($exceptionClass) ->disableOriginalConstructor() ->getMock(); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getManagerExecute', 'checkForConfigurationException', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $oControllerMock->method('getManagerExecute')->willReturn($oManagerExecuteMock); $oControllerMock->method('checkForConfigurationException')->willThrowException($exception); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3ExecChangedUserManager' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::getUserManagerAssignment * @test * @throws ReflectionException * @throws Exception */ public function userManagerAssignmentReturnsRightInstance() { $this->assertInstanceOf( d3usermanager_touserassignment::class, $this->callMethod( $this->_oController, 'getUserManagerAssignment', [d3GetOxidDIC()->get(d3usermanager::class)] ) ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::d3resetUserManagerAssignment * @test * @throws ReflectionException * @throws Exception */ public function canStartResettingUserManagerAssignment() { /** @var d3usermanager_execute|MockObject $oManagerAssignmentMock */ $oManagerAssignmentMock = $this->getMockBuilder(d3usermanager_touserassignment::class) ->onlyMethods(['resetAssignment']) ->setConstructorArgs([d3GetOxidDIC()->get(d3usermanager::class)]) ->getMock(); $oManagerAssignmentMock->expects($this->once())->method('resetAssignment'); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods([ 'getManager', 'getUserManagerAssignment', ]) ->getMock(); $oControllerMock->method('getManager')->willReturn(d3GetOxidDIC()->get(d3usermanager::class)); $oControllerMock->method('getUserManagerAssignment')->willReturn($oManagerAssignmentMock); $this->_oController = $oControllerMock; $this->callMethod( $this->_oController, 'd3resetUserManagerAssignment' ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::getFolderList * @test * @throws ReflectionException */ public function canGetManagerFolderList() { $aFolderList = [ 'Folder#1', 'Folder#2', ]; /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods(['d3getSelectableFolderList']) ->getMock(); $oManagerMock->expects($this->once())->method('d3getSelectableFolderList')->willReturn($aFolderList); /** @var d3_usermanager_jobs|MockObject $oControllerMock */ $oControllerMock = $this->getMockBuilder(d3_usermanager_jobs::class) ->onlyMethods(['getManager']) ->getMock(); $oControllerMock->method('getManager')->willReturn($oManagerMock); $this->_oController = $oControllerMock; $this->assertSame( $aFolderList, $this->callMethod( $this->_oController, 'getFolderList' ) ); } /** * @covers \D3\Usermanager\Application\Controller\Admin\d3_usermanager_jobs::execChangedContents * @test * @throws ReflectionException */ public function canExecChangedContents() { $_POST['oxid'] = 'testItemId'; /** @var d3usermanager|MockObject $oManagerMock */ $oManagerMock = $this->getMockBuilder(d3usermanager::class) ->onlyMethods([ 'load', 'getEditableContent', ]) ->getMock(); $oManagerMock->expects($this->once())->method('load')->willReturn(true); $oManagerMock->expects($this->once())->method('getEditableContent')->with( $this->stringContains('testItemId') )->willReturn(['html' => '