1501 lines
52 KiB
PHP
1501 lines
52 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
|
|
*/
|
|
|
|
namespace D3\Ordermanager\tests\unit\Setup;
|
|
|
|
use D3\DIContainerHandler\d3DicException;
|
|
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
|
|
use D3\ModCfg\Application\Model\d3bitmask;
|
|
use D3\ModCfg\Application\Model\d3str;
|
|
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
|
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
|
|
use D3\ModCfg\Application\Model\Installwizzard\d3installdbrecord;
|
|
use D3\Ordermanager\Application\Model\d3ordermanager;
|
|
use D3\Ordermanager\Setup\d3ordermanager_update;
|
|
use D3\Ordermanager\tests\unit\d3OrdermanagerUnitTestCase;
|
|
use Doctrine\DBAL\Exception as DBALException;
|
|
use Doctrine\DBAL\Driver\Result;
|
|
use Doctrine\DBAL\Query\Expression\ExpressionBuilder;
|
|
use Doctrine\DBAL\Query\QueryBuilder;
|
|
use Exception;
|
|
use OxidEsales\Eshop\Application\Model\Shop;
|
|
use OxidEsales\Eshop\Core\Config;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
|
use OxidEsales\EshopCommunity\Internal\Framework\Database\ConnectionProvider;
|
|
use PHPUnit\Framework\MockObject\MockObject;
|
|
use ReflectionException;
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update
|
|
*/
|
|
class d3ordermanager_updateTest extends d3OrdermanagerUnitTestCase
|
|
{
|
|
/** @var d3ordermanager_update */
|
|
protected $_oModel;
|
|
|
|
/**
|
|
* setup basic requirements
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws Exception
|
|
*/
|
|
public function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->_oModel = d3GetOxidDIC()->get(d3ordermanager_update::class);
|
|
}
|
|
|
|
public function tearDown(): void
|
|
{
|
|
parent::tearDown();
|
|
|
|
unset($this->_oModel);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::doesOrder2OrderManagerTableNotExist
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canCheckOrder2OrderManagerTableNotExist()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods(['_checkTableNotExist'])
|
|
->getMock();
|
|
$oModelMock->expects($this->once())->method('_checkTableNotExist')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'doesOrder2OrderManagerTableNotExist'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addOrder2OrderManagerTable
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canAddOrder2OrderManagerTable()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'doesOrder2OrderManagerTableNotExist',
|
|
'_addTable2',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('doesOrder2OrderManagerTableNotExist')->willReturn(true);
|
|
$oModelMock->expects($this->once())->method('_addTable2')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addOrder2OrderManagerTable'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addOrder2OrderManagerTable
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canNotAddExistingOrder2OrderManagerTable()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'doesOrder2OrderManagerTableNotExist',
|
|
'_addTable2',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('doesOrder2OrderManagerTableNotExist')->willReturn(false);
|
|
$oModelMock->expects($this->never())->method('_addTable2')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addOrder2OrderManagerTable'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::d3GetInstallDbRecord
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function d3GetInstallDbRecordReturnsRightInstance()
|
|
{
|
|
$this->assertInstanceOf(
|
|
d3installdbrecord::class,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'd3GetInstallDbRecord'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::d3GetConfig
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function d3GetConfigReturnsRightInstance()
|
|
{
|
|
$this->assertInstanceOf(
|
|
Config::class,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'd3GetConfig'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::doesModCfgItemNotExist
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canCheckDoesModCfgItemNotExistPositive()
|
|
{
|
|
/** @var d3installdbrecord|MockObject $oInstallDbRecordMock */
|
|
$oInstallDbRecordMock = $this->getMockBuilder(d3installdbrecord::class)
|
|
->onlyMethods(['checkTableRecordNotExist'])
|
|
->setConstructorArgs([$this->_oModel])
|
|
->getMock();
|
|
$oInstallDbRecordMock->expects($this->once())->method('checkTableRecordNotExist')->willReturn(true);
|
|
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['getShopIds'])
|
|
->getMock();
|
|
$oConfigMock->method('getShopIds')->willReturn([1, 2]);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'd3GetConfig',
|
|
'd3GetInstallDbRecord',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
$oModelMock->method('d3GetInstallDbRecord')->willReturn($oInstallDbRecordMock);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertTrue(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'doesModCfgItemNotExist'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::doesModCfgItemNotExist
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canCheckDoesModCfgItemNotExistNegative()
|
|
{
|
|
/** @var d3installdbrecord|MockObject $oInstallDbRecordMock */
|
|
$oInstallDbRecordMock = $this->getMockBuilder(d3installdbrecord::class)
|
|
->onlyMethods(['checkTableRecordNotExist'])
|
|
->setConstructorArgs([$this->_oModel])
|
|
->getMock();
|
|
$oInstallDbRecordMock->expects($this->exactly(2))->method('checkTableRecordNotExist')->willReturn(false);
|
|
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['getShopIds'])
|
|
->getMock();
|
|
$oConfigMock->method('getShopIds')->willReturn([1, 2]);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'd3GetConfig',
|
|
'd3GetInstallDbRecord',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
$oModelMock->method('d3GetInstallDbRecord')->willReturn($oInstallDbRecordMock);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertFalse(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'doesModCfgItemNotExist'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addModCfgItem
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canAddModCfgItemNoStepByStep()
|
|
{
|
|
/** @var d3installdbrecord|MockObject $oInstallDbRecordMock */
|
|
$oInstallDbRecordMock = $this->getMockBuilder(d3installdbrecord::class)
|
|
->onlyMethods(['checkTableRecordNotExist'])
|
|
->setConstructorArgs([$this->_oModel])
|
|
->getMock();
|
|
$oInstallDbRecordMock->expects($this->exactly(2))->method('checkTableRecordNotExist')->willReturn(true);
|
|
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['getShopIds'])
|
|
->getMock();
|
|
$oConfigMock->method('getShopIds')->willReturn([1, 2]);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'doesModCfgItemNotExist',
|
|
'd3GetConfig',
|
|
'd3GetInstallDbRecord',
|
|
'setInitialExecMethod',
|
|
'_updateTableItem2',
|
|
'getStepByStepMode', ])
|
|
->getMock();
|
|
$oModelMock->method('doesModCfgItemNotExist')->willReturn(true);
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
$oModelMock->method('d3GetInstallDbRecord')->willReturn($oInstallDbRecordMock);
|
|
$oModelMock->method('setInitialExecMethod')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(2))->method('_updateTableItem2')->willReturn(true);
|
|
$oModelMock->method('getStepByStepMode')->willReturn(false);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addModCfgItem'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addModCfgItem
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canAddModCfgItemStepByStep()
|
|
{
|
|
/** @var d3installdbrecord|MockObject $oInstallDbRecordMock */
|
|
$oInstallDbRecordMock = $this->getMockBuilder(d3installdbrecord::class)
|
|
->onlyMethods(['checkTableRecordNotExist'])
|
|
->setConstructorArgs([$this->_oModel])
|
|
->getMock();
|
|
$oInstallDbRecordMock->expects($this->exactly(1))->method('checkTableRecordNotExist')->willReturn(true);
|
|
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['getShopIds'])
|
|
->getMock();
|
|
$oConfigMock->method('getShopIds')->willReturn([1, 2]);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'doesModCfgItemNotExist',
|
|
'd3GetConfig',
|
|
'd3GetInstallDbRecord',
|
|
'setInitialExecMethod',
|
|
'_updateTableItem2',
|
|
'getStepByStepMode', ])
|
|
->getMock();
|
|
$oModelMock->method('doesModCfgItemNotExist')->willReturn(true);
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
$oModelMock->method('d3GetInstallDbRecord')->willReturn($oInstallDbRecordMock);
|
|
$oModelMock->method('setInitialExecMethod')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(1))->method('_updateTableItem2')->willReturn(true);
|
|
$oModelMock->method('getStepByStepMode')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addModCfgItem'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addModCfgItem
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canNotAddExistingModCfgItem()
|
|
{
|
|
/** @var d3installdbrecord|MockObject $oInstallDbRecordMock */
|
|
$oInstallDbRecordMock = $this->getMockBuilder(d3installdbrecord::class)
|
|
->onlyMethods(['checkTableRecordNotExist'])
|
|
->setConstructorArgs([$this->_oModel])
|
|
->getMock();
|
|
$oInstallDbRecordMock->expects($this->never())->method('checkTableRecordNotExist')->willReturn(true);
|
|
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['getShopIds'])
|
|
->getMock();
|
|
$oConfigMock->method('getShopIds')->willReturn([1, 2]);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'doesModCfgItemNotExist',
|
|
'd3GetConfig',
|
|
'd3GetInstallDbRecord',
|
|
'setInitialExecMethod',
|
|
'_updateTableItem2',
|
|
'getStepByStepMode', ])
|
|
->getMock();
|
|
$oModelMock->method('doesModCfgItemNotExist')->willReturn(false);
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
$oModelMock->method('d3GetInstallDbRecord')->willReturn($oInstallDbRecordMock);
|
|
$oModelMock->method('setInitialExecMethod')->willReturn(true);
|
|
$oModelMock->expects($this->never())->method('_updateTableItem2')->willReturn(true);
|
|
$oModelMock->method('getStepByStepMode')->willReturn(false);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addModCfgItem'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::checkCronPasswordSet
|
|
* @test
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws ReflectionException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
* @throws StandardException
|
|
* @dataProvider passwordTestDataProvider
|
|
*/
|
|
public function canCheckCronPasswordSet($testPW, $expected)
|
|
{
|
|
/** @var d3_cfg_mod $set */
|
|
$set = d3GetOxidDIC()->get('d3.ordermanager.modcfg');
|
|
$currPassword = $set->getValue('sCronPassword');
|
|
$set->setValue('sCronPassword', $testPW);
|
|
$set->saveNoLicenseRefresh();
|
|
|
|
$this->assertSame(
|
|
$expected,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'checkCronPasswordSet'
|
|
)
|
|
);
|
|
|
|
$set->setValue('sCronPassword', $currPassword);
|
|
$set->saveNoLicenseRefresh();
|
|
}
|
|
|
|
/**
|
|
* @return array[]
|
|
*/
|
|
public function passwordTestDataProvider()
|
|
{
|
|
return [
|
|
[false, true],
|
|
[null, true],
|
|
['', true],
|
|
['abc', false],
|
|
['123', false],
|
|
['%_(', false],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::createCronPassword
|
|
* @test
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws ReflectionException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function canCreateCronPasswordExecute()
|
|
{
|
|
$expectedPW = 'testRandom';
|
|
|
|
/** @var d3_cfg_mod $set */
|
|
$set = d3GetOxidDIC()->get('d3.ordermanager.modcfg');
|
|
$currPassword = $set->getValue('sCronPassword');
|
|
$set->setValue('sCronPassword', 'otherContent');
|
|
$set->saveNoLicenseRefresh();
|
|
|
|
$oStrMock = $this->getMockBuilder(d3str::class)
|
|
->onlyMethods(['random_str'])
|
|
->getMock();
|
|
$oStrMock->expects($this->atLeastOnce())->method('random_str')->willReturn($expectedPW);
|
|
d3GetOxidDIC()->set(d3str::class, $oStrMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'hasExecute',
|
|
'setActionLog',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('hasExecute')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(1))->method('setActionLog')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'createCronPassword'
|
|
);
|
|
|
|
/** @var d3_cfg_mod $set */
|
|
$fixtureSet = d3GetOxidDIC()->get('d3.ordermanager.modcfg');
|
|
$fixturePw = $fixtureSet->getValue('sCronPassword');
|
|
|
|
$this->assertSame($expectedPW, $fixturePw);
|
|
|
|
$set->setValue('sCronPassword', $currPassword);
|
|
$set->saveNoLicenseRefresh();
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::createCronPassword
|
|
* @test
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws ReflectionException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function canCreateCronPasswordNoExecute()
|
|
{
|
|
$expectedPW = 'testRandom';
|
|
|
|
/** @var d3_cfg_mod $set */
|
|
$set = d3GetOxidDIC()->get('d3.ordermanager.modcfg');
|
|
$currPassword = $set->getValue('sCronPassword');
|
|
$set->setValue('sCronPassword', 'otherContent');
|
|
$set->saveNoLicenseRefresh();
|
|
|
|
$oStrMock = $this->getMockBuilder(d3str::class)
|
|
->onlyMethods(['random_str'])
|
|
->getMock();
|
|
$oStrMock->expects($this->never())->method('random_str')->willReturn($expectedPW);
|
|
d3GetOxidDIC()->set(d3str::class, $oStrMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'hasExecute',
|
|
'setActionLog',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('hasExecute')->willReturn(false);
|
|
$oModelMock->expects($this->exactly(1))->method('setActionLog')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'createCronPassword'
|
|
);
|
|
|
|
/** @var d3_cfg_mod $set */
|
|
$fixtureSet = d3GetOxidDIC()->get('d3.ordermanager.modcfg');
|
|
$fixturePw = $fixtureSet->getValue('sCronPassword');
|
|
|
|
$this->assertSame('otherContent', $fixturePw);
|
|
|
|
$set->setValue('sCronPassword', $currPassword);
|
|
$set->saveNoLicenseRefresh();
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::needExampleJobList
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws d3DicException
|
|
*/
|
|
public function needExampleJobListPass()
|
|
{
|
|
/** @var Result|MockObject $resultMock */
|
|
$resultMock = $this->getMockBuilder(Result::class)
|
|
->onlyMethods(get_class_methods(Result::class))
|
|
->getMock();
|
|
$resultMock->method('fetchOne')->willReturn(0);
|
|
|
|
/** @var QueryBuilder|MockObject $oQBMock */
|
|
$oQBMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['execute'])
|
|
->setConstructorArgs([(new ConnectionProvider())->get()])
|
|
->getMock();
|
|
$oQBMock->method('execute')->willReturn($resultMock);
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $oQBMock);
|
|
|
|
$this->assertTrue(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'needExampleJobList'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::needExampleJobList
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws d3DicException
|
|
*/
|
|
public function needExampleJobListDontPass()
|
|
{
|
|
/** @var Result|MockObject $resultMock */
|
|
$resultMock = $this->getMockBuilder(Result::class)
|
|
->onlyMethods(get_class_methods(Result::class))
|
|
->getMock();
|
|
$resultMock->method('fetchOne')->willReturn(1);
|
|
|
|
/** @var QueryBuilder|MockObject $oQBMock */
|
|
$oQBMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['execute'])
|
|
->setConstructorArgs([(new ConnectionProvider())->get()])
|
|
->getMock();
|
|
$oQBMock->method('execute')->willReturn($resultMock);
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $oQBMock);
|
|
|
|
$this->assertFalse(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'needExampleJobList'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addExampleJobList
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canAddExampleJobList()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleJobInsertList',
|
|
'_addExampleJobItem',
|
|
'setUpdateBreak',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleJobInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->expects($this->exactly(2))->method('_addExampleJobItem')->will($this->onConsecutiveCalls(true, false, true));
|
|
$oModelMock->method('setUpdateBreak')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addExampleJobList'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::isExampleContentMissingInDatabase
|
|
* @test
|
|
* @throws DBALException
|
|
* @throws ReflectionException
|
|
*/
|
|
public function checkIsExampleContentMissingInDatabasePositive()
|
|
{
|
|
/** @var Result|MockObject $resultMock */
|
|
$resultMock = $this->getMockBuilder(Result::class)
|
|
->onlyMethods(get_class_methods(Result::class))
|
|
->getMock();
|
|
$resultMock->method('fetchOne')->willReturn(1);
|
|
|
|
/** @var ExpressionBuilder|MockObject $expressionBuilderMock */
|
|
$expressionBuilderMock = $this->getMockBuilder(ExpressionBuilder::class)
|
|
->onlyMethods(['in'])
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$expressionBuilderMock->expects($this->atLeastOnce())->method('in');
|
|
|
|
/** @var QueryBuilder|MockObject $queryBuilderMock */
|
|
$queryBuilderMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['execute', 'expr'])
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$queryBuilderMock->expects($this->atLeastOnce())->method('execute')->willReturn($resultMock);
|
|
$queryBuilderMock->method('expr')->willReturn($expressionBuilderMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleContentInsertList',
|
|
'getExampleJobItem1InsertFields',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleContentInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->method('getExampleJobItem1InsertFields')->willReturn(
|
|
[
|
|
[
|
|
'fieldname' => 'OXID',
|
|
'content' => "foobar",
|
|
'force_update' => false,
|
|
'use_quote' => false,
|
|
'use_multilang' => false,
|
|
],
|
|
[
|
|
'fieldname' => 'OXLOADID',
|
|
'content' => "d3unknownContentId",
|
|
'force_update' => false,
|
|
'use_quote' => true,
|
|
'use_multilang' => false,
|
|
],
|
|
]
|
|
);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $queryBuilderMock);
|
|
|
|
$this->assertTrue(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'isExampleContentMissingInDatabase'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::isExampleContentMissingInDatabase
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws d3DicException
|
|
*/
|
|
public function checkIsExampleContentMissingInDatabaseNegative()
|
|
{
|
|
/** @var Result|MockObject $resultMock */
|
|
$resultMock = $this->getMockBuilder(Result::class)
|
|
->onlyMethods(get_class_methods(Result::class))
|
|
->getMock();
|
|
$resultMock->method('fetchOne')->willReturn(0);
|
|
|
|
/** @var ExpressionBuilder|MockObject $expressionBuilderMock */
|
|
$expressionBuilderMock = $this->getMockBuilder(ExpressionBuilder::class)
|
|
->onlyMethods(['in'])
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$expressionBuilderMock->expects($this->atLeastOnce())->method('in');
|
|
|
|
/** @var QueryBuilder|MockObject $queryBuilderMock */
|
|
$queryBuilderMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['execute', 'expr'])
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$queryBuilderMock->expects($this->atLeastOnce())->method('execute')->willReturn($resultMock);
|
|
$queryBuilderMock->method('expr')->willReturn($expressionBuilderMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleContentInsertList',
|
|
'getExampleJobItem1InsertFields',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleContentInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->method('getExampleJobItem1InsertFields')->willReturn(
|
|
[
|
|
[
|
|
'fieldname' => 'OXID',
|
|
'content' => "foobar",
|
|
'force_update' => false,
|
|
'use_quote' => false,
|
|
'use_multilang' => false,
|
|
],
|
|
[
|
|
'fieldname' => 'OXLOADID',
|
|
'content' => "d3unknownContentId",
|
|
'force_update' => false,
|
|
'use_quote' => true,
|
|
'use_multilang' => false,
|
|
],
|
|
]
|
|
);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $queryBuilderMock);
|
|
|
|
$this->assertFalse(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'isExampleContentMissingInDatabase'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::isExampleContentMissingInDatabase
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws d3DicException
|
|
*/
|
|
public function checkIsExampleContentMissingInDatabaseNegativeNoLoadId()
|
|
{
|
|
/** @var Result|MockObject $resultMock */
|
|
$resultMock = $this->getMockBuilder(Result::class)
|
|
->onlyMethods(get_class_methods(Result::class))
|
|
->getMock();
|
|
$resultMock->method('fetchOne')->willReturn(0);
|
|
|
|
/** @var QueryBuilder|MockObject $queryBuilderMock */
|
|
$queryBuilderMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['execute'])
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
$queryBuilderMock->expects($this->never())->method('execute')->willReturn($resultMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleContentInsertList',
|
|
'getExampleJobItem1InsertFields',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleContentInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->method('getExampleJobItem1InsertFields')->willReturn(
|
|
[
|
|
[
|
|
'fieldname' => 'OXID',
|
|
'content' => "foobar",
|
|
'force_update' => false,
|
|
'use_quote' => false,
|
|
'use_multilang' => false,
|
|
],
|
|
]
|
|
);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $queryBuilderMock);
|
|
|
|
$this->assertFalse(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'isExampleContentMissingInDatabase'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addExampleContentList
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canAddExampleContentList()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleContentInsertList',
|
|
'_addExampleJobItem',
|
|
'setUpdateBreak',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleContentInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->expects($this->exactly(2))->method('_addExampleJobItem')->will($this->onConsecutiveCalls(true, false, true));
|
|
$oModelMock->method('setUpdateBreak')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addExampleContentList'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::requireExample2ShopRelation
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws Exception
|
|
* @dataProvider trueFalseExpected
|
|
*/
|
|
public function checkRequireExample2ShopRelationPass($expected)
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'setInitialExecMethod',
|
|
'getExampleJobInsertList',
|
|
'getExampleJobItem1InsertFields',
|
|
'_require2ShopRelation',
|
|
'getShopListByActiveModule',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('setInitialExecMethod')->willReturn(true);
|
|
$oModelMock->method('getExampleJobInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1InsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->expects($this->exactly($expected ? 1 : 3))->method('getExampleJobItem1InsertFields')->willReturn([]);
|
|
$oModelMock->expects($this->exactly($expected ? 1 : 3))->method('_require2ShopRelation')->willReturn($expected);
|
|
$oModelMock->expects($this->atLeastOnce())->method('getShopListByActiveModule')->willReturn(
|
|
[
|
|
1 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
2 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
3 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
]
|
|
);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertSame(
|
|
$expected,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'requireExample2ShopRelation'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addExample2ShopRelation
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws Exception
|
|
*/
|
|
public function canAddExample2ShopRelationPass()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleJobInsertList',
|
|
'_add2ShopRelation',
|
|
'getShopListByActiveModule',
|
|
])
|
|
->addMethods([
|
|
'getExampleJobItem1PassInsertFields',
|
|
'getExampleJobItem2PassInsertFields',
|
|
'getExampleJobItem3PassInsertFields',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleJobInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1PassInsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem2PassInsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem3PassInsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->expects($this->exactly(3))->method('getExampleJobItem1PassInsertFields')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(3))->method('getExampleJobItem2PassInsertFields')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(3))->method('getExampleJobItem3PassInsertFields')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(9))->method('_add2ShopRelation')->willReturn(true);
|
|
$oModelMock->expects($this->atLeastOnce())->method('getShopListByActiveModule')->willReturn(
|
|
[
|
|
1 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
2 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
3 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
]
|
|
);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertTrue(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addExample2ShopRelation'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addExample2ShopRelation
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @throws Exception
|
|
*/
|
|
public function canAddExample2ShopRelationFails()
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getExampleJobInsertList',
|
|
'_add2ShopRelation',
|
|
'getShopListByActiveModule',
|
|
])
|
|
->addMethods([
|
|
'getExampleJobItem1FailedInsertFields',
|
|
'getExampleJobItem2FailedInsertFields',
|
|
'getExampleJobItem3FailedInsertFields',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getExampleJobInsertList')->willReturn(
|
|
[
|
|
[
|
|
'content' => 'getExampleJobItem1FailedInsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem2FailedInsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
[
|
|
'content' => 'getExampleJobItem3FailedInsertFields',
|
|
'table' => 'd3modprofile',
|
|
],
|
|
]
|
|
);
|
|
$oModelMock->expects($this->exactly(3))->method('getExampleJobItem1FailedInsertFields')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(3))->method('getExampleJobItem2FailedInsertFields')->willReturn(true);
|
|
$oModelMock->expects($this->never())->method('getExampleJobItem3FailedInsertFields')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(6))->method('_add2ShopRelation')->will(
|
|
$this->onConsecutiveCalls(
|
|
true,
|
|
true,
|
|
true,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
true,
|
|
true
|
|
)
|
|
);
|
|
$oModelMock->expects($this->atLeastOnce())->method('getShopListByActiveModule')->willReturn(
|
|
[
|
|
1 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
2 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
3 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
]
|
|
);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertFalse(
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addExample2ShopRelation'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobInsertList
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetExampleJobInsertList()
|
|
{
|
|
$aList = $this->callMethod(
|
|
$this->_oModel,
|
|
'getExampleJobInsertList'
|
|
);
|
|
|
|
$this->assertIsArray($aList);
|
|
$this->assertTrue((bool) count($aList));
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleContentInsertList
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetExampleContentInsertList()
|
|
{
|
|
$aList = $this->callMethod(
|
|
$this->_oModel,
|
|
'getExampleContentInsertList'
|
|
);
|
|
|
|
$this->assertIsArray($aList);
|
|
$this->assertTrue((bool) count($aList));
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem1InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem2InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem3InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem4InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem5InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem6InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem7InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem8InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem9InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleJobItem10InsertFields
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetExampleJobItemXInsertFields()
|
|
{
|
|
/** @var Shop|MockObject $oShopMock */
|
|
$oShopMock = $this->getMockBuilder(Shop::class)
|
|
->onlyMethods(['getId'])
|
|
->getMock();
|
|
$oShopMock->method('getId')->willReturn('shopId');
|
|
|
|
/** @var d3bitmask|MockObject $oD3BitMock */
|
|
$oD3BitMock = $this->getMockBuilder(d3bitmask::class)
|
|
->onlyMethods(['getIntByBitPosition'])
|
|
->getMock();
|
|
$oD3BitMock->method('getIntByBitPosition')->willReturn(1);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getD3BitMask',
|
|
'_getLangAbbrFieldName',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getD3BitMask')->willReturn($oD3BitMock);
|
|
$oModelMock->method('_getLangAbbrFieldName')->willReturn('fieldName');
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
foreach ($this->_oModel->getExampleJobInsertList() as $aJobContentInfos) {
|
|
$aFieldList = $this->callMethod(
|
|
$this->_oModel,
|
|
$aJobContentInfos['content'],
|
|
[$oShopMock]
|
|
);
|
|
|
|
$this->assertIsArray($aFieldList);
|
|
$this->assertTrue((bool) count($aFieldList));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleContent1InsertFields
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getExampleContent2InsertFields
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canGetExampleContentXInsertFields()
|
|
{
|
|
/** @var Shop|MockObject $oShopMock */
|
|
$oShopMock = $this->getMockBuilder(Shop::class)
|
|
->onlyMethods(['getId'])
|
|
->getMock();
|
|
$oShopMock->method('getId')->willReturn('shopId');
|
|
|
|
/** @var d3bitmask|MockObject $oD3BitMock */
|
|
$oD3BitMock = $this->getMockBuilder(d3bitmask::class)
|
|
->onlyMethods(['getIntByBitPosition'])
|
|
->getMock();
|
|
$oD3BitMock->method('getIntByBitPosition')->willReturn(1);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getD3BitMask',
|
|
'_getLangAbbrFieldName',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('getD3BitMask')->willReturn($oD3BitMock);
|
|
$oModelMock->method('_getLangAbbrFieldName')->willReturn('fieldName');
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
foreach ($this->_oModel->getExampleContentInsertList() as $aContentInfos) {
|
|
$aFieldList = $this->callMethod(
|
|
$this->_oModel,
|
|
$aContentInfos['content'],
|
|
[$oShopMock]
|
|
);
|
|
|
|
$this->assertIsArray($aFieldList);
|
|
$this->assertTrue((bool) count($aFieldList));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::_addExampleJobItem
|
|
* @test
|
|
*
|
|
* @param $expected
|
|
*
|
|
* @throws ReflectionException
|
|
* @dataProvider trueFalseExpected
|
|
*/
|
|
public function canAddExampleJobItemNoStepByStep($expected)
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getShopListByActiveModule',
|
|
'setInitialExecMethod',
|
|
'_updateTableItem2',
|
|
'getStepByStepMode', ])
|
|
->addMethods(['jobFieldMethodName'])
|
|
->getMock();
|
|
|
|
$oModelMock->method('getShopListByActiveModule')->willReturn(
|
|
[
|
|
1 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
2 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
]
|
|
);
|
|
|
|
$oModelMock->method('jobFieldMethodName')->willReturn(true);
|
|
$oModelMock->method('setInitialExecMethod')->willReturn(true);
|
|
$oModelMock->expects($this->exactly(2))->method('_updateTableItem2')->willReturn($expected);
|
|
$oModelMock->method('getStepByStepMode')->willReturn(false);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertSame(
|
|
$expected,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'_addExampleJobItem',
|
|
['tableName', 'jobFieldMethodName']
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::getD3BitMask
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function getD3BitReturnsRightInstance()
|
|
{
|
|
$this->assertInstanceOf(
|
|
d3bitmask::class,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'getD3BitMask'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::_addExampleJobItem
|
|
* @test
|
|
*
|
|
* @param $expected
|
|
*
|
|
* @throws ReflectionException
|
|
* @dataProvider trueFalseExpected
|
|
*/
|
|
public function canAddExampleJobItemStepByStep($expected)
|
|
{
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'getShopListByActiveModule',
|
|
'setInitialExecMethod',
|
|
'_updateTableItem2',
|
|
'getStepByStepMode', ])
|
|
->addMethods([
|
|
'jobFieldMethodName',
|
|
])
|
|
->getMock();
|
|
|
|
$oModelMock->method('getShopListByActiveModule')->willReturn(
|
|
[
|
|
1 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
2 => d3GetOxidDIC()->get('d3ox.ordermanager.'.Shop::class),
|
|
]
|
|
);
|
|
|
|
$oModelMock->method('jobFieldMethodName')->willReturn(true);
|
|
$oModelMock->method('setInitialExecMethod')->willReturn(true);
|
|
$oModelMock->expects($this->once())->method('_updateTableItem2')->willReturn($expected);
|
|
$oModelMock->method('getStepByStepMode')->willReturn(true);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertSame(
|
|
$expected,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'_addExampleJobItem',
|
|
[ 'tableName', 'jobFieldMethodName' ]
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function trueFalseExpected(): array
|
|
{
|
|
return [
|
|
'true expected' => [true],
|
|
'false expected' => [false],
|
|
];
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param $blCheckStatus
|
|
* @param $blExpected
|
|
* @param $iArticleCount
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::hasNotOrderArticlesParentId
|
|
* @test
|
|
* @throws DBALException
|
|
* @throws ReflectionException
|
|
* @dataProvider hasNotOrderArticlesParentIdDataProvider
|
|
*/
|
|
public function checkHasNotOrderArticlesParentId($blCheckStatus, $blExpected, $iArticleCount)
|
|
{
|
|
/** @var Result|MockObject $resultMock */
|
|
$resultMock = $this->getMockBuilder(Result::class)
|
|
->onlyMethods(get_class_methods(Result::class))
|
|
->getMock();
|
|
$resultMock->method('fetchOne')->willReturn($iArticleCount);
|
|
|
|
/** @var QueryBuilder|MockObject $oQBMock */
|
|
$oQBMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['execute'])
|
|
->setConstructorArgs([(new ConnectionProvider())->get()])
|
|
->getMock();
|
|
$oQBMock->method('execute')->willReturn($resultMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'mustCheckOrderArticlesParentId',
|
|
'setDontCheckOrderArticlesParentId',
|
|
])
|
|
->getMock();
|
|
$oModelMock->method('mustCheckOrderArticlesParentId')->willReturn($blCheckStatus);
|
|
$oModelMock->expects($this->exactly(((int)!(bool) $iArticleCount)))->method('setDontCheckOrderArticlesParentId');
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $oQBMock);
|
|
|
|
$this->assertSame(
|
|
$blExpected,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'hasNotOrderArticlesParentId'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function hasNotOrderArticlesParentIdDataProvider()
|
|
{
|
|
return [
|
|
[true, true, 2], // first execution, must check
|
|
[true, false, 0], // first execution, must check
|
|
[false, false, 2], // later executions, mustn't check again
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param $blConfig
|
|
* @param $blExpected
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::mustCheckOrderArticlesParentId
|
|
* @test
|
|
* @throws ReflectionException
|
|
* @dataProvider mustCheckOrderArticlesParentIdPassDataProvider
|
|
*/
|
|
public function mustCheckOrderArticlesParentIdPass($blConfig, $blExpected)
|
|
{
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['getShopConfVar'])
|
|
->getMock();
|
|
$oConfigMock->expects($this->once())->method('getShopConfVar')->willReturn($blConfig);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods(['d3GetConfig'])
|
|
->getMock();
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->assertSame(
|
|
$blExpected,
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'mustCheckOrderArticlesParentId'
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function mustCheckOrderArticlesParentIdPassDataProvider()
|
|
{
|
|
return [
|
|
[true, false],
|
|
[false, true],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::setDontCheckOrderArticlesParentId()
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function setDontCheckOrderArticlesParentIdPass()
|
|
{
|
|
/** @var Config|MockObject $oConfigMock */
|
|
$oConfigMock = $this->getMockBuilder(Config::class)
|
|
->onlyMethods(['saveShopConfVar'])
|
|
->getMock();
|
|
$oConfigMock->expects($this->once())->method('saveShopConfVar')->willReturn(true);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods(['d3GetConfig'])
|
|
->getMock();
|
|
$oModelMock->method('d3GetConfig')->willReturn($oConfigMock);
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'setDontCheckOrderArticlesParentId'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers \D3\Ordermanager\Setup\d3ordermanager_update::addOrderArticlesParentId()
|
|
* @test
|
|
* @throws ReflectionException
|
|
*/
|
|
public function canAddOrderArticlesParentId()
|
|
{
|
|
/** @var QueryBuilder|MockObject $oQBMock */
|
|
$oQBMock = $this->getMockBuilder(QueryBuilder::class)
|
|
->onlyMethods(['setParameter'])
|
|
->setConstructorArgs([(new ConnectionProvider())->get()])
|
|
->getMock();
|
|
|
|
d3GetOxidDIC()->set('d3ox.modcfg.OxDbQueryBuilder', $oQBMock);
|
|
|
|
/** @var d3ordermanager_update|MockObject $oModelMock */
|
|
$oModelMock = $this->getMockBuilder(d3ordermanager_update::class)
|
|
->onlyMethods([
|
|
'_tableSqlExecute',
|
|
'setDontCheckOrderArticlesParentId',
|
|
])
|
|
->getMock();
|
|
$oModelMock->expects($this->once())->method('_tableSqlExecute')->willReturn(true);
|
|
$oModelMock->expects($this->once())->method('setDontCheckOrderArticlesParentId');
|
|
|
|
$this->_oModel = $oModelMock;
|
|
|
|
$this->callMethod(
|
|
$this->_oModel,
|
|
'addOrderArticlesParentId'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param $sLicenseKey
|
|
* @param d3ordermanager $oManager
|
|
* @return null
|
|
*/
|
|
protected function _setModuleLicenseKey($sLicenseKey, $oManager = null)
|
|
{
|
|
return null;
|
|
}
|
|
}
|