442 Zeilen
14 KiB
PHP
442 Zeilen
14 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\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_cfg_usermanageritem_mall;
|
|
use D3\Usermanager\Application\Model\d3usermanager;
|
|
use D3\Usermanager\tests\unit\d3UsermanagerUnitTestCase;
|
|
use Exception;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
|
use OxidEsales\Eshop\Core\Language;
|
|
use OxidEsales\Facts\Facts;
|
|
use PHPUnit\Framework\MockObject\MockObject;
|
|
use ReflectionException;
|
|
use stdClass;
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall
|
|
*/
|
|
class d3_cfg_usermanageritem_mallTest extends d3UsermanagerUnitTestCase
|
|
{
|
|
/** @var d3_cfg_usermanageritem_mall */
|
|
protected $_oController;
|
|
|
|
/**
|
|
* setup basic requirements
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws Exception
|
|
*/
|
|
public function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->_oController = d3GetOxidDIC()->get(d3_cfg_usermanageritem_mall::class);
|
|
}
|
|
|
|
public function tearDown(): void
|
|
{
|
|
parent::tearDown();
|
|
|
|
unset($this->_oController);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::__construct
|
|
* @test
|
|
*/
|
|
public function constructorPass()
|
|
{
|
|
$this->assertSame(
|
|
'd3usermanager',
|
|
d3GetOxidDIC()->getParameter('d3.usermanager.modcfgid')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::__construct
|
|
* @test
|
|
*/
|
|
public function constructorException()
|
|
{
|
|
/** @var d3_cfg_usermanageritem_mall|MockObject $controller */
|
|
$controller = $this->getMockBuilder(d3_cfg_usermanageritem_mall::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
d3GetOxidDIC()->setParameter('d3.usermanager.modcfgid', 'differentModCfgid');
|
|
|
|
$this->expectException(wrongModIdException::class);
|
|
|
|
$this->callMethod(
|
|
$controller,
|
|
'__construct'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::getProfile
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function profileObjectHasRightInstance()
|
|
{
|
|
$this->assertInstanceOf(
|
|
d3usermanager::class,
|
|
$this->callMethod($this->_oController, 'getProfile')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::render
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function renderWithOxidPass()
|
|
{
|
|
$_POST['oxid'] = 'foobar';
|
|
|
|
/** @var d3usermanager|MockObject $oProfileMock */
|
|
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
|
|
->onlyMethods(['loadInLang'])
|
|
->getMock();
|
|
$oProfileMock->expects($this->once())->method('loadInLang')->willReturn(true);
|
|
|
|
/** @var d3_cfg_usermanageritem_mall|MockObject $oControllerMock */
|
|
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_mall::class)
|
|
->onlyMethods([
|
|
'getProfile',
|
|
'_d3LoadInOtherLang',
|
|
'_isSetOxid',
|
|
])
|
|
->getMock();
|
|
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
|
|
$oControllerMock->method('_d3LoadInOtherLang')->willReturn($oProfileMock);
|
|
$oControllerMock->method('_isSetOxid')->willReturn(true);
|
|
|
|
$this->_oController = $oControllerMock;
|
|
|
|
$this->assertSame(
|
|
strtoupper((oxNew(Facts::class, __DIR__ ?? 'path'))->getEdition()) === 'EE' ?
|
|
'admin_mall' :
|
|
'@d3usermanager/admin/d3_cfg_usermanageritem_mall',
|
|
$this->callMethod($this->_oController, 'render')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::render
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function renderWithoutOxidPass()
|
|
{
|
|
$_POST['oxid'] = null;
|
|
|
|
/** @var d3usermanager|MockObject $oProfileMock */
|
|
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
|
|
->onlyMethods(['loadInLang'])
|
|
->getMock();
|
|
$oProfileMock->expects($this->never())->method('loadInLang')->willReturn(true);
|
|
|
|
/** @var d3_cfg_usermanageritem_mall|MockObject $oControllerMock */
|
|
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_mall::class)
|
|
->onlyMethods([
|
|
'getProfile',
|
|
'_d3LoadInOtherLang',
|
|
'_isSetOxid',
|
|
])
|
|
->getMock();
|
|
$oControllerMock->method('getProfile')->willReturn($oProfileMock);
|
|
$oControllerMock->method('_d3LoadInOtherLang')->willReturn($oProfileMock);
|
|
$oControllerMock->method('_isSetOxid')->willReturn(false);
|
|
|
|
$this->_oController = $oControllerMock;
|
|
|
|
$this->assertSame(
|
|
strtoupper(d3GetOxidDIC()->get('d3ox.usermanager.'.Facts::class)->getEdition()) === 'EE' ?
|
|
'admin_mall' :
|
|
'@d3usermanager/admin/d3_cfg_usermanageritem_mall',
|
|
$this->callMethod($this->_oController, 'render')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::getUserMessages
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetUserMessages()
|
|
{
|
|
$this->assertIsArray(
|
|
$this->callMethod($this->_oController, 'getUserMessages')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::getLang
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function languageObjectIsRightInstance()
|
|
{
|
|
$this->assertInstanceOf(
|
|
Language::class,
|
|
$this->callMethod($this->_oController, 'getLang')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::getHelpURL
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetHelpUrlWithExtension()
|
|
{
|
|
/** @var d3filesystem|MockObject $oFileSystemMock */
|
|
$oFileSystemMock = $this->getMockBuilder(d3filesystem::class)
|
|
->onlyMethods([
|
|
'unprefixedslashit',
|
|
'splitFilename',
|
|
])
|
|
->getMock();
|
|
$oFileSystemMock->method('unprefixedslashit')->willReturnCallback([$this, 'firstArgumentReturnCallback']);
|
|
$oFileSystemMock->method('splitFilename')->willReturn(
|
|
['name' => 'filename', 'ext' => 'html']
|
|
);
|
|
d3GetOxidDIC()->set(d3filesystem::class, $oFileSystemMock);
|
|
|
|
/** @var Language|MockObject $oLangMock */
|
|
$oLangMock = $this->getMockBuilder(Language::class)
|
|
->onlyMethods(['TranslateString'])
|
|
->getMock();
|
|
$oLangMock->method('TranslateString')->willReturn('modulepath');
|
|
|
|
/** @var stdClass|MockObject $oModCfgMock */
|
|
$oModCfgMock = $this->getMockBuilder(stdClass::class)
|
|
->addMethods(['getHelpURL'])
|
|
->getMock();
|
|
$oModCfgMock->method('getHelpURL')->willReturn('https://faq.d3data.de/module/');
|
|
|
|
/** @var d3_cfg_usermanageritem_mall|MockObject $oControllerMock */
|
|
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_mall::class)
|
|
->onlyMethods([
|
|
'd3GetSet',
|
|
'getLang',
|
|
])
|
|
->getMock();
|
|
$oControllerMock->method('d3GetSet')->willReturn($oModCfgMock);
|
|
$oControllerMock->method('getLang')->willReturn($oLangMock);
|
|
|
|
$this->setValue($oControllerMock, '_sHelpLinkMLAdd', 'foobar');
|
|
|
|
$this->_oController = $oControllerMock;
|
|
|
|
$this->assertEquals(
|
|
'https://faq.d3data.de/module/modulepath',
|
|
$this->callMethod($this->_oController, 'getHelpURL')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::getHelpURL
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetHelpUrlWithoutExtension()
|
|
{
|
|
/** @var d3filesystem|MockObject $oFileSystemMock */
|
|
$oFileSystemMock = $this->getMockBuilder(d3filesystem::class)
|
|
->onlyMethods(['splitFilename'])
|
|
->getMock();
|
|
$oFileSystemMock->method('splitFilename')->willReturn(
|
|
['name' => 'filename', 'ext' => '']
|
|
);
|
|
|
|
d3GetOxidDIC()->set(d3filesystem::class, $oFileSystemMock);
|
|
|
|
/** @var d3str|MockObject $oD3StrMock */
|
|
$oD3StrMock = $this->getMockBuilder(d3str::class)
|
|
->onlyMethods([
|
|
'unprefixedslashit',
|
|
'trailingslashit',
|
|
])
|
|
->getMock();
|
|
$oD3StrMock->method('unprefixedslashit')->willReturnCallback([$this, 'firstArgumentReturnCallback']);
|
|
$oD3StrMock->expects($this->once())->method('trailingslashit')->willReturnCallback([$this, 'firstArgumentReturnCallback']);
|
|
|
|
d3GetOxidDIC()->set(d3str::class, $oD3StrMock);
|
|
|
|
/** @var Language|MockObject $oLangMock */
|
|
$oLangMock = $this->getMockBuilder(Language::class)
|
|
->onlyMethods(['TranslateString'])
|
|
->getMock();
|
|
$oLangMock->method('TranslateString')->willReturn('modulepath');
|
|
|
|
/** @var stdClass|MockObject $oModCfgMock */
|
|
$oModCfgMock = $this->getMockBuilder(stdClass::class)
|
|
->addMethods(['getHelpURL'])
|
|
->getMock();
|
|
$oModCfgMock->method('getHelpURL')->willReturn('https://faq.d3data.de/module/');
|
|
|
|
/** @var d3_cfg_usermanageritem_mall|MockObject $oControllerMock */
|
|
$oControllerMock = $this->getMockBuilder(d3_cfg_usermanageritem_mall::class)
|
|
->onlyMethods([
|
|
'd3GetSet',
|
|
'getLang',
|
|
])
|
|
->getMock();
|
|
$oControllerMock->method('d3GetSet')->willReturn($oModCfgMock);
|
|
$oControllerMock->method('getLang')->willReturn($oLangMock);
|
|
|
|
$this->setValue($oControllerMock, '_sHelpLinkMLAdd', 'foobar');
|
|
|
|
$this->_oController = $oControllerMock;
|
|
|
|
$this->assertEquals(
|
|
'https://faq.d3data.de/module/modulepath',
|
|
$this->callMethod($this->_oController, 'getHelpURL')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function firstArgumentReturnCallback()
|
|
{
|
|
$args = func_get_args();
|
|
return $args[0];
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::d3GetSet
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function modcfgObjectIsRightInstance()
|
|
{
|
|
$this->assertInstanceOf(
|
|
d3_cfg_mod::class,
|
|
$this->callMethod($this->_oController, 'd3GetSet')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::getNaviItems
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function naviItemshasRightType()
|
|
{
|
|
$this->assertIsArray(
|
|
$this->callMethod($this->_oController, 'getNaviItems')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::d3GetMenuItemTitle
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function menuItemTitleHasRightType()
|
|
{
|
|
$this->assertIsString(
|
|
$this->callMethod($this->_oController, 'd3GetMenuItemTitle')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::d3GetMenuSubItemTitle
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function menuSubItemTitleHasRightType()
|
|
{
|
|
$this->assertIsString(
|
|
$this->callMethod($this->_oController, 'd3GetMenuSubItemTitle')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::_isSetOxid
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function checkSetOxidPass()
|
|
{
|
|
$this->assertTrue(
|
|
$this->callMethod($this->_oController, '_isSetOxid', ['foobar'])
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::_isSetOxid
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function checkUnsetOxidPass()
|
|
{
|
|
$this->assertFalse(
|
|
$this->callMethod($this->_oController, '_isSetOxid', [-1])
|
|
);
|
|
$this->assertFalse(
|
|
$this->callMethod($this->_oController, '_isSetOxid', [null])
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_mall::_d3LoadInOtherLang
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canLoadInOtherLang()
|
|
{
|
|
/** @var d3usermanager|MockObject $oProfileMock */
|
|
$oProfileMock = $this->getMockBuilder(d3usermanager::class)
|
|
->onlyMethods([
|
|
'getAvailableInLangs',
|
|
'loadInLang',
|
|
])
|
|
->getMock();
|
|
$oProfileMock->method('getAvailableInLangs')->willReturn(['en' => 'english']);
|
|
$oProfileMock->expects($this->once())->method('loadInLang')->willReturn(true);
|
|
|
|
$this->setValue($this->_oController, '_iEditLang', 'de');
|
|
|
|
$this->assertSame(
|
|
$oProfileMock,
|
|
$this->callMethod($this->_oController, '_d3LoadInOtherLang', [$oProfileMock, 'foobar'])
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param $sLicenseKey
|
|
* @param d3usermanager $oManager
|
|
* @return null
|
|
*/
|
|
protected function _setModuleLicenseKey($sLicenseKey, $oManager = null)
|
|
{
|
|
return null;
|
|
}
|
|
}
|