Usermanager/tests/unit/Application/Controller/Admin/d3_cfg_usermanageritem_actionTest.php

625 lines
22 KiB
PHP

<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\tests\unit\Application\Controller\Admin;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action;
use D3\Usermanager\Application\Model\Actions\d3usermanager_actiongrouplist;
use D3\Usermanager\Application\Model\d3usermanager;
use D3\Usermanager\Application\Model\d3usermanager_conf;
use D3\Usermanager\tests\unit\d3UsermanagerUnitTestCase;
use Exception as ExceptionAlias;
use Exception;
use OxidEsales\Eshop\Application\Model\ContentList;
use OxidEsales\Eshop\Application\Model\User;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Language;
use PHPUnit\Framework\MockObject\MockObject;
use ReflectionException;
use D3\Usermanager\Application\Model\Actions as Actions;
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action
*/
class d3_cfg_usermanageritem_actionTest extends d3UsermanagerUnitTestCase
{
/** @var d3_cfg_usermanageritem_action */
protected $_oController;
/**
* setup basic requirements
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws Exception
*/
public function setUp(): void
{
parent::setUp();
$this->_oController = d3GetOxidDIC()->get(d3_cfg_usermanageritem_action::class);
}
public function tearDown(): void
{
parent::tearDown();
unset($this->_oController);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::save
* @test
* @throws ReflectionException
*/
public function canSaveNoMissingValues()
{
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getValue'])
->getMock();
$getValueMap = [['blActionOrderStorno_status', true]];
$oProfileMock->method('getValue')->willReturnMap($getValueMap);
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getProfile'])
->getMock();
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
$this->_oController = $oControllerMock;
$this->callMethod($this->_oController, 'save');
$this->assertNull($this->_oController->getViewDataElement('missingRequValuesActions'));
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::save
* @test
* @throws ReflectionException
*/
public function canSaveMissingValues()
{
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getValue'])
->getMock();
$getValueMap = [['blActionCust2Group_status', true]];
$oProfileMock->method('getValue')->willReturnMap($getValueMap);
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getProfile'])
->getMock();
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
$this->_oController = $oControllerMock;
$this->callMethod($this->_oController, 'save');
$aMissing = $this->_oController->getViewDataElement('missingRequValuesActions');
$this->assertIsArray($aMissing);
$this->assertCount(1, $aMissing);
$this->assertContains('add2Group', $aMissing);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getContentList
* @test
* @throws ReflectionException
*/
public function getContentListReturnsItems()
{
$oContentList = $this->callMethod($this->_oController, 'getContentList', []);
$this->assertInstanceOf(ContentList::class, $oContentList);
$this->assertNotEmpty($oContentList);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::d3GetConfig
* @test
* @throws ReflectionException
*/
public function d3GetConfigReturnsRightInstance()
{
$this->assertInstanceOf(
Config::class,
$this->callMethod(
$this->_oController,
'd3GetConfig'
)
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getItemFieldNames
* @test
* @throws ReflectionException
*/
public function orderFieldNamesPass()
{
$aFieldNames = $this->callMethod($this->_oController, 'getItemFieldNames');
$this->assertIsArray($aFieldNames);
$this->assertGreaterThan(0, count($aFieldNames));
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getProfile
* @test
* @throws ReflectionException
* @throws Exception
*/
public function getProfileReturnsRightInstance()
{
$oProfile = d3GetOxidDIC()->get(d3usermanager::class);
$oProfile->setId('newProfileId');
$oProfile->save();
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getEditObjectId'])
->getMock();
$oControllerMock->method('getEditObjectId')->willReturn('newProfileId');
$this->_oController = $oControllerMock;
$oAssertProfile = $this->callMethod($this->_oController, 'getProfile');
$this->assertInstanceOf(
d3usermanager::class,
$oAssertProfile
);
$this->assertSame('newProfileId', $oAssertProfile->getId());
$oProfile->delete();
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getProfile
* @test
* @throws ReflectionException
* @throws Exception
*/
public function getProfileOtherLangReturnsRightInstance()
{
$oProfile = d3GetOxidDIC()->get(d3usermanager::class);
$oProfile->setId('newProfileId');
$oProfile->save();
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getEditObjectId'])
->getMock();
$oControllerMock->method('getEditObjectId')->willReturn('newProfileId');
$this->_oController = $oControllerMock;
$this->setValue($this->_oController, '_iEditLang', 'en');
$oAssertProfile = $this->callMethod($this->_oController, 'getProfile');
$this->assertInstanceOf(
d3usermanager::class,
$oAssertProfile
);
$this->assertSame('newProfileId', $oAssertProfile->getId());
$oProfile->delete();
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getExportExamplePath
* @test
* @throws ReflectionException
*/
public function exportExamplePathWillGenerated()
{
$_POST['oxid'] = 'foobar';
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'loadInLang',
'getStartTime',
'getListExportFilePath',
])
->getMock();
$oProfileMock->expects($this->once())->method('loadInLang')->willReturn(true);
$oProfileMock->method('getStartTime')->willReturn(1420716228);
$oProfileMock->method('getListExportFilePath')->willReturn('/var/www/html/shop/source/export/d3usermananger_profileName_2015-01-08_12-23-48.csv');
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods([
'getProfile',
'_d3LoadInOtherLang',
])
->getMock();
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
$oControllerMock->method('_d3LoadInOtherLang')->willReturn($oProfileMock);
$this->_oController = $oControllerMock;
$sPath = $this->callMethod($this->_oController, 'getExportExamplePath');
$this->assertMatchesRegularExpression('@/var/www/html/shop/source/export/d3usermananger_profileName_.*.csv@i', $sPath);
$this->assertStringNotContainsStringIgnoringCase('2015-01-08_12-23-48', $sPath);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getLang
* @test
* @throws ReflectionException
*/
public function langWillReturnRightInstance()
{
$this->assertInstanceOf(
Language::class,
$this->callMethod($this->_oController, 'getLang')
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getFieldNameDescription
* @test
* @throws ReflectionException
*/
public function fieldNameDescriptionCanTranslated()
{
/** @var Language|MockObject $oLangMock */
$oLangMock = $this->getMockBuilder(Language::class)
->onlyMethods(['translateString'])
->getMock();
$oLangMock->expects($this->once())->method('translateString')->willReturn('%1$s (%2$s)');
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods([
'getFieldNameTitle',
'getLang',
])
->getMock();
$oControllerMock->method('getFieldNameTitle')->willReturn('barfoo');
$oControllerMock->method('getLang')->willReturn($oLangMock);
$this->_oController = $oControllerMock;
$this->assertSame(
'barfoo (foobar_5)',
$this->callMethod($this->_oController, 'getFieldNameDescription', ['foobar_5'])
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getFieldNameDescription
* @test
* @throws ReflectionException
*/
public function fieldNameDescriptionCantTranslated()
{
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getFieldNameTitle'])
->getMock();
$oControllerMock->method('getFieldNameTitle')->willReturn(null);
$this->_oController = $oControllerMock;
$this->assertSame(
'foobar_5',
$this->callMethod($this->_oController, 'getFieldNameDescription', ['foobar_5'])
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getFieldNameTitle
* @test
* @throws ReflectionException
*/
public function canGetFieldNameTitleWithLangIdent()
{
/** @var Language|MockObject $oLangMock */
$oLangMock = $this->getMockBuilder(Language::class)
->onlyMethods(['translateString'])
->getMock();
$oLangMock->expects($this->exactly(2))->method('translateString')->with(
$this->logicalOr(
$this->stringContains('D3_USERMANAGER'),
$this->logicalAnd(
$this->stringContains('foobar'),
$this->logicalNot(
$this->stringContains('5')
)
)
)
)->willReturn('Sprache %u ');
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getLang'])
->getMock();
$oControllerMock->method('getLang')->willReturn($oLangMock);
$this->_oController = $oControllerMock;
$this->assertSame(
'Sprache %u Sprache 0 ',
$this->callMethod($this->_oController, 'getFieldNameTitle', ['foobar_1'])
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getFieldNameTitle
* @test
* @throws ReflectionException
*/
public function canGetFieldNameTitleWithoutLangIdent()
{
/** @var Language|MockObject $oLangMock */
$oLangMock = $this->getMockBuilder(Language::class)
->onlyMethods(['translateString'])
->getMock();
$oLangMock->expects($this->once())->method('translateString')->with(
$this->stringContains('foobar')
)->willReturn('Sprache %u ');
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getLang'])
->getMock();
$oControllerMock->method('getLang')->willReturn($oLangMock);
$this->_oController = $oControllerMock;
$this->assertSame(
'Sprache %u ',
$this->callMethod($this->_oController, 'getFieldNameTitle', ['foobar'])
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getFieldNameTitle
* @test
* @throws ReflectionException
*/
public function canGetFieldNameTitleWithNotExistingTranslation()
{
/** @var Language|MockObject $oLangMock */
$oLangMock = $this->getMockBuilder(Language::class)
->onlyMethods(['translateString'])
->getMock();
$oLangMock->expects($this->once())->method('translateString')->willReturn('FOOBAR');
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getLang'])
->getMock();
$oControllerMock->method('getLang')->willReturn($oLangMock);
$this->setValue($oControllerMock, '_sExportFieldTitleBaseMLIdent', '');
$this->_oController = $oControllerMock;
$this->assertNull(
$this->callMethod($this->_oController, 'getFieldNameTitle', ['FOOBAR'])
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getActionGroupList
* @test
* @throws ReflectionException
* @throws ExceptionAlias
*/
public function getActionListReturnsRightInstance()
{
$this->assertInstanceOf(
d3usermanager_actiongrouplist::class,
$this->callMethod(
$this->_oController,
'getActionGroupList'
)
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getActionListObject
* @test
* @throws ReflectionException
*/
public function canGetActionListObject()
{
$this->assertInstanceOf(
Actions\d3usermanager_actionlist::class,
$this->callMethod($this->_oController, 'getActionListObject')
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getActionList
* @test
* @throws ReflectionException
*/
public function canGetActionList()
{
$aActionList = $this->callMethod($this->_oController, 'getActionList');
$this->assertIsArray(
$aActionList
);
$this->assertNotEmpty($aActionList);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::getGroupedActionList
* @test
* @throws ReflectionException
* @throws ExceptionAlias
*/
public function canGetGroupList()
{
$groupedList = [
'D3_USERMANAGER_ACTION_ORDER' => [
'moveOrderToFolder' => Actions\d3usermanager_action_setactiveflag::class,
'stornoOrder' => Actions\d3usermanager_action_deletefromgroup::class,
],
'D3_USERMANAGER_ACTION_CUSTOMER' => [
'custAddToGroup' => Actions\d3usermanager_action_add2group::class,
],
];
/** @var d3usermanager_actiongrouplist|MockObject $oActionGroupListMock */
$oActionGroupListMock = $this->getMockBuilder(d3usermanager_actiongrouplist::class)
->onlyMethods([
'setGroups',
'getGroupList',
])
->setConstructorArgs([$this->_oController->getProfile(), d3GetOxidDIC()->get('d3ox.usermanager.'.User::class)])
->getMock();
$oActionGroupListMock->method('setGroups');
$oActionGroupListMock->method('getGroupList')->willReturn($groupedList);
/** @var d3usermanager_conf|MockObject $oConfigurationMock */
$oConfigurationMock = $this->getMockBuilder(d3usermanager_conf::class)
->onlyMethods(['getGroupedActionIdList'])
->getMock();
$oConfigurationMock->method('getGroupedActionIdList')->willReturn($groupedList);
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getConfiguration'])
->getMock();
$oProfileMock->method('getConfiguration')->willReturn($oConfigurationMock);
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods([
'getProfile',
'getActionList',
])
->getMock();
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
$oControllerMock->method('getActionList')->willReturn($groupedList);
$this->_oController = $oControllerMock;
$aList = $this->callMethod($this->_oController, 'getGroupedActionList');
$this->assertIsArray($aList);
$this->assertCount(2, $aList);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::_d3LoadInOtherLang
* @test
* @throws ReflectionException
*/
public function canLoadInOtherLanguages()
{
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getAvailableInLangs',
'loadInLang',
])
->getMock();
$oProfileMock->method('getAvailableInLangs')->willReturn(['de' => 'deutsch']);
$oProfileMock->expects($this->once())->method('loadInLang')->willReturn(true);
$this->setValue($this->_oController, '_iEditLang', 'en');
$this->assertSame(
$oProfileMock,
$this->callMethod(
$this->_oController,
'_d3LoadInOtherLang',
[$oProfileMock, 'oxid']
)
);
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::_d3LoadInOtherLang
* @test
* @throws ReflectionException
*/
public function dontNeedLoadInOtherLanguages()
{
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getAvailableInLangs',
'loadInLang',
])
->getMock();
$oProfileMock->method('getAvailableInLangs')->willReturn(['de' => 'deutsch']);
$oProfileMock->expects($this->never())->method('loadInLang')->willReturn(true);
$this->setValue($this->_oController, '_iEditLang', 'de');
$this->assertSame(
$oProfileMock,
$this->callMethod(
$this->_oController,
'_d3LoadInOtherLang',
[$oProfileMock, 'oxid']
)
);
}
/**
* @return string
*/
public function shopCompatHandlerCallback(): string
{
$args = func_get_args();
return '/module/path/'.$args[1][1];
}
/**
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action::markAsFinished
* @test
* @throws ReflectionException
*/
public function canMarkedAsFinished()
{
/** @var d3usermanager|MockObject $oProfileMock */
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['markConcernedItemsAsFinished'])
->getMock();
$oProfileMock->expects($this->once())->method('markConcernedItemsAsFinished')->willReturn(25);
/** @var d3_cfg_usermanageritem_action|MockObject $oControllerMock */
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_action::class)
->onlyMethods(['getProfile'])
->getMock();
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
$this->_oController = $oControllerMock;
$this->callMethod($this->_oController, 'markAsFinished');
}
/**
* @param $sLicenseKey
* @param d3usermanager $oManager
* @return null
*/
protected function _setModuleLicenseKey($sLicenseKey, $oManager = null)
{
return null;
}
}