Usermanager/tests/unit/Modules/Application/Model/d3_oxemail_usermanagerTest.php

1995 lines
70 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\Modules\Application\Model;
use D3\ModCfg\Application\Model\d3str;
use D3\ModCfg\Application\Model\Exception\wrongModIdException;
use D3\ModCfg\Application\Model\Log\d3log;
use D3\Usermanager\Application\Model\d3usermanager;
use D3\Usermanager\Application\Model\d3usermanagerlist;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_templaterendererExceptionInterface;
use D3\Usermanager\Application\Model\Exceptions\emptyMessageException;
use D3\Usermanager\Application\Model\MessageContentGenerator;
use D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager;
use D3\Usermanager\tests\unit\d3UsermanagerUnitTestCase;
use Doctrine\DBAL\Query\QueryBuilder;
use Exception;
use Html2Text\Html2Text;
use OxidEsales\Eshop\Application\Model\Content;
use OxidEsales\Eshop\Application\Model\Remark;
use OxidEsales\Eshop\Application\Model\Shop;
use OxidEsales\Eshop\Application\Model\User;
use OxidEsales\Eshop\Core\Email;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Field;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Database\QueryBuilderFactoryInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateEngineInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridgeInterface;
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererInterface;
use PHPUnit\Framework\MockObject\MockObject;
use ReflectionException;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager
*/
class d3_oxemail_usermanagerTest extends d3UsermanagerUnitTestCase
{
/** @var d3_oxemail_usermanager */
protected $_oModel;
/**
* setup basic requirements
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws Exception
*/
public function setUp(): void
{
parent::setUp();
$this->_oModel = d3GetOxidDIC()->get('d3ox.usermanager.'.Email::class);
}
public function tearDown(): void
{
parent::tearDown();
unset($this->_oModel);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::__construct
* @test
*/
public function constructorPass()
{
$this->assertEquals(
'd3usermanager',
d3GetOxidDIC()->getParameter('d3.usermanager.modcfgid')
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::__construct
* @test
*/
public function constructorException()
{
/** @var d3_oxemail_usermanager|MockObject $controller */
$controller = $this->getMockBuilder(d3_oxemail_usermanager::class)
->disableOriginalConstructor()
->getMock();
d3GetOxidDIC()->setParameter('d3.usermanager.modcfgid', 'differentModCfgid');
$this->expectException(wrongModIdException::class);
$this->callMethod(
$controller,
'__construct'
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3GetUserManagerTemplateEngine
* @test
* @throws ReflectionException
*/
public function templateEngineHasRightInstance()
{
$this->assertInstanceOf(
TemplateEngineInterface::class,
$this->callMethod(
$this->_oModel,
'd3GetUserManagerTemplateEngine'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3sendUserManagerEmail
* @test
* @throws ReflectionException
*/
public function canSendUserManagerEmail()
{
$viewData = [
'item1' => 'value1',
'item2' => 'value2',
];
/** @var Shop|MockObject $oFieldMock */
$oFieldMock = $this->getMockBuilder(Shop::class)
->addMethods(['getRawValue'])
->getMock();
$oFieldMock->method('getRawValue')->willReturn('value');
/** @var Shop|MockObject $oShopMock */
$oShopMock = $this->getMockBuilder(Shop::class)
->onlyMethods([
'__get',
'getFieldData',
])
->getMock();
$oShopMock->method('__get')->willReturn($oFieldMock);
$oShopMock->method('getFieldData')->willReturn('value');
/** @var d3log|MockObject $oD3LogMock */
$oD3LogMock = $this->getMockBuilder(d3log::class)
->onlyMethods(['log'])
->getMock();
$oD3LogMock->method('log')->willReturnSelf();
/** @var TemplateRendererInterface $renderer */
$renderer = ContainerFactory::getInstance()->getContainer()
->get(TemplateRendererBridgeInterface::class)
->getTemplateRenderer();
$templateEngine = $renderer->getTemplateEngine();
$templateEngineClass = get_class($templateEngine);
/** @var TemplateEngineInterface|MockObject $templateEngineMock */
$templateEngineMock = $this->getMockBuilder($templateEngineClass)
->onlyMethods(['render', 'addGlobal'])
->disableOriginalConstructor()
->getMock();
$templateEngineMock->method('render')->willReturn('renderedTemplateContent');
$templateEngineMock->expects($this->exactly(count($viewData)))->method('addGlobal')->willReturn(true);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'getShop',
'd3GetUserManagerTemplateEngine',
'setMailParams',
'setViewData',
'processViewArray',
'd3UMsetBody',
'd3UMsetAltBody',
'getBody',
'd3UMsetSubject',
'setRecipient',
'setReplyTo',
'send',
'getViewData',
])
->getMock();
$oModelMock->method('getShop')->willReturn($oShopMock);
$oModelMock->method('d3GetUserManagerTemplateEngine')->willReturn($templateEngineMock);
$oModelMock->method('setMailParams')->willReturn(true);
$oModelMock->method('setViewData')->willReturn(true);
$oModelMock->method('processViewArray')->willReturn(true);
$oModelMock->expects($this->once())->method('d3UMsetBody')->willReturn(true);
$oModelMock->method('d3UMsetAltBody')->willReturn(true);
$oModelMock->method('getBody')->willReturn('mailBody');
$oModelMock->method('d3UMsetSubject')->willReturn(true);
$oModelMock->expects($this->once())->method('setRecipient')->willReturn(true);
$oModelMock->method('setReplyTo')->willReturn(true);
$oModelMock->method('getViewData')->willReturn($viewData);
$oModelMock->expects($this->once())->method('send')->willReturn(true);
$this->_oModel = $oModelMock;
$this->assertSame(
true,
$this->callMethod(
$this->_oModel,
'd3sendUserManagerEmail',
[[]]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerUser
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canLoadUserUniqueOxid()
{
/** @var d3usermanagerlist|MockObject $oUserManagerListMock */
$oUserManagerListMock = $this->getMockBuilder(d3usermanagerlist::class)
->onlyMethods(['d3GetUserSaveTriggeredManagerTasks'])
->getMock();
$oUserManagerListMock->method('d3GetUserSaveTriggeredManagerTasks')->willReturnSelf();
d3GetOxidDIC()->set(d3usermanagerlist::class, $oUserManagerListMock);
/** preparing */
/** @var QueryBuilder $queryBuilder */
$queryBuilder = ContainerFactory::getInstance()->getContainer()->get(QueryBuilderFactoryInterface::class)->create();
$queryBuilder->delete('oxuser')
->where(
$queryBuilder->expr()->or(
$queryBuilder->expr()->in('oxid', [
$queryBuilder->createNamedParameter('testOxId1'),
$queryBuilder->createNamedParameter('testOxId2'),
]),
$queryBuilder->expr()->eq('oxusername', $queryBuilder->createNamedParameter(''))
)
);
$queryBuilder->execute();
/** @var User $oUser */
$oUser = oxNew(User::class);
$oUser->setId('testOxId1');
$oUser->save();
$oReturnUser = $this->callMethod(
$this->_oModel,
'd3getUserManagerUser',
['testOxId1']
);
$this->assertInstanceOf(
User::class,
$oReturnUser
);
$this->assertSame(
'testOxId1',
$oReturnUser->getId()
);
$oUser->delete('testOxId1');
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerUser
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canLoadUserOxidPartOfOtherData()
{
/** @var d3usermanagerlist|MockObject $oUserManagerListMock */
$oUserManagerListMock = $this->getMockBuilder(d3usermanagerlist::class)
->onlyMethods(['d3GetUserSaveTriggeredManagerTasks'])
->getMock();
$oUserManagerListMock->method('d3GetUserSaveTriggeredManagerTasks')->willReturn(oxNew(d3usermanagerlist::class));
d3GetOxidDIC()->set(d3usermanagerlist::class, $oUserManagerListMock);
$oUser = new User();
$oUser->setId('testOxId2');
$oUser->save();
$oReturnUser = $this->callMethod(
$this->_oModel,
'd3getUserManagerUser',
['testOxId2@@otherData']
);
$this->assertInstanceOf(
User::class,
$oReturnUser
);
$this->assertSame(
'testOxId2',
$oReturnUser->getId()
);
$oUser->delete('testOxId2');
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManager
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canLoadManager()
{
/** @var d3usermanager $oManager */
$oManager = d3GetOxidDIC()->get(d3usermanager::class);
$oManager->setId('testOxId3');
$oManager->save();
$oReturnManager = $this->callMethod(
$this->_oModel,
'd3getUserManager',
['testOxId3']
);
$this->assertInstanceOf(
d3usermanager::class,
$oReturnManager
);
$this->assertSame(
'testOxId3',
$oReturnManager->getId()
);
$oManager->delete('testOxId3');
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::sendUserManagerMail
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canStartSendingUserManagerMail()
{
/** @var Remark|MockObject $oRemarkMock */
$oRemarkMock = $this->getMockBuilder(Remark::class)
->onlyMethods(['save'])
->getMock();
$oRemarkMock->expects($this->once())->method('save')->willReturn(true);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'getUserManagerMailContent',
'getShop',
'd3UMsetBody',
'd3UMsetAltBody',
'd3UMsetSubject',
'd3SetUserManagerReplyAddress',
'd3SetUserManagerMailRecipients',
'send',
])
->getMock();
$oModelMock->method('getUserManagerMailContent')->willReturn([
'html' => 'foo',
'plain' => 'bar',
'subject' => 'testSubject',
]);
$oModelMock->method('getShop')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.'.Shop::class));
$oModelMock->expects($this->once())->method('d3UMsetBody')->willReturn(true);
$oModelMock->method('d3UMsetAltBody')->willReturn(true);
$oModelMock->method('d3UMsetSubject')->willReturn(true);
$oModelMock->method('d3SetUserManagerReplyAddress')->willReturn(true);
$oModelMock->method('d3SetUserManagerMailRecipients')->willReturn($oRemarkMock);
$oModelMock->expects($this->once())->method('send')->willReturn(true);
$this->_oModel = $oModelMock;
$this->assertSame(
true,
$this->callMethod(
$this->_oModel,
'sendUserManagerMail',
[d3GetOxidDIC()->get(d3usermanager::class)]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::sendUserManagerMail
* @test
* @throws ReflectionException
*/
public function cantSendEmptyUserManagerMail()
{
/** @var Remark|MockObject $oRemarkMock */
$oRemarkMock = $this->getMockBuilder(Remark::class)
->onlyMethods(['save'])
->getMock();
$oRemarkMock->expects($this->never())->method('save')->willReturn(true);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'getUserManagerMailContent',
'getShop',
'd3UMsetBody',
'd3UMsetAltBody',
'd3UMsetSubject',
'd3SetUserManagerReplyAddress',
'd3SetUserManagerMailRecipients',
'send',
])
->getMock();
$oModelMock->method('getUserManagerMailContent')->willThrowException(oxNew(emptyMessageException::class));
$oModelMock->method('getShop')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.'.Shop::class));
$oModelMock->expects($this->never())->method('d3UMsetBody')->willReturn(true);
$oModelMock->method('d3UMsetAltBody')->willReturn(true);
$oModelMock->method('d3UMsetSubject')->willReturn(true);
$oModelMock->method('d3SetUserManagerReplyAddress')->willReturn(true);
$oModelMock->method('d3SetUserManagerMailRecipients')->willReturn($oRemarkMock);
$oModelMock->expects($this->never())->method('send')->willReturn(true);
$this->_oModel = $oModelMock;
$this->assertSame(
false,
$this->callMethod(
$this->_oModel,
'sendUserManagerMail',
[d3GetOxidDIC()->get(d3usermanager::class)]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UMsetBody
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UMsetAltBody
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UMsetSubject
* @test
* @param $setMethod
* @param $getMethod
* @param $returnValue
* @param $expectException
*
* @throws ReflectionException
* @dataProvider canSetUserManagerMailContentDataProvider
*/
public function canSetUserManagerMailContent($setMethod, $getMethod, $returnValue, $expectException)
{
/** @var Email|MockObject $mailMock */
$mailMock = $this->getMockBuilder(Email::class)
->onlyMethods([$setMethod, $getMethod, 'd3UserManagerThrowUnequalContentException'])
->getMock();
$mailMock->expects($this->atLeastOnce())->method($setMethod)->willReturn(true);
$mailMock->method($getMethod)->willReturn($returnValue);
$mailMock->expects($this->exactly((int) $expectException))->method('d3UserManagerThrowUnequalContentException');
$this->_oModel = $mailMock;
$methodName = 'd3UM'.$setMethod;
$this->callMethod(
$this->_oModel,
$methodName,
['content']
);
}
/**
* @return array[]
*/
public function canSetUserManagerMailContentDataProvider(): array
{
return [
'body return passed' => ['setBody', 'getBody', 'content', false],
'body return empty' => ['setBody', 'getBody', '', true],
'altbody return passed' => ['setAltBody', 'getAltBody', 'content', false],
'altbody return empty' => ['setAltBody', 'getAltBody', '', true],
'subject return passed' => ['setSubject', 'getSubject', 'content', false],
'subject return empty' => ['setSubject', 'getSubject', '', true],
];
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UMsetBody
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UMsetAltBody
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UMsetSubject
* @test
*
* @param $setMethod
* @param $getMethod
*
* @throws ReflectionException
* @dataProvider canSetUserManagerMailContentEmptyDataProvider
*/
public function canSetUserManagerMailContentEmpty($setMethod, $getMethod)
{
/** @var Email|MockObject $mailMock */
$mailMock = $this->getMockBuilder(Email::class)
->onlyMethods([$setMethod, $getMethod, 'd3UserManagerThrowUnequalContentException'])
->getMock();
$mailMock->expects(self::atLeastOnce())->method($setMethod)->willReturn(true);
$mailMock->expects($this->never())->method($getMethod);
$mailMock->expects($this->never())->method('d3UserManagerThrowUnequalContentException');
$this->_oModel = $mailMock;
$methodName = 'd3UM'.$setMethod;
$this->callMethod(
$this->_oModel,
$methodName,
['']
);
}
/**
* @return array[]
*/
public function canSetUserManagerMailContentEmptyDataProvider(): array
{
return [
'body' => ['setBody', 'getBody'],
'altbody' => ['setAltBody', 'getAltBody'],
'subject' => ['setSubject', 'getSubject'],
];
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3SetUserManagerMailRecipients
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canSetUserManagerMailRecipientsCustomer()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomerRecipient',
'd3sendUserManagerMailToCustomer',
'd3hasUserManagerOwnerRecipient',
'd3sendUserManagerMailToOwner',
'd3hasUserManagerCustomRecipient',
'd3sendUserManagerMailToCustom',
])
->getMock();
$oModelMock->method('d3hasUserManagerCustomerRecipient')->willReturn(true);
$oModelMock->expects($this->once())->method('d3sendUserManagerMailToCustomer')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$oModelMock->method('d3hasUserManagerOwnerRecipient')->willReturn(false);
$oModelMock->expects($this->never())->method('d3sendUserManagerMailToOwner')->willReturn(oxNew(Remark::class));
$oModelMock->method('d3hasUserManagerCustomRecipient')->willReturn(false);
$oModelMock->expects($this->never())->method('d3sendUserManagerMailToCustom')->willReturn(oxNew(Remark::class));
$this->_oModel = $oModelMock;
$this->assertInstanceOf(
Remark::class,
$this->callMethod(
$this->_oModel,
'd3SetUserManagerMailRecipients',
[d3GetOxidDIC()->get('d3ox.usermanager.'.Shop::class)]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3SetUserManagerMailRecipients
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canSetUserManagerMailRecipientsOwner()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomerRecipient',
'd3sendUserManagerMailToCustomer',
'd3hasUserManagerOwnerRecipient',
'd3sendUserManagerMailToOwner',
'd3hasUserManagerCustomRecipient',
'd3sendUserManagerMailToCustom',
])
->getMock();
$oModelMock->method('d3hasUserManagerCustomerRecipient')->willReturn(false);
$oModelMock->expects($this->never())->method('d3sendUserManagerMailToCustomer')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$oModelMock->method('d3hasUserManagerOwnerRecipient')->willReturn(true);
$oModelMock->expects($this->once())->method('d3sendUserManagerMailToOwner')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$oModelMock->method('d3hasUserManagerCustomRecipient')->willReturn(false);
$oModelMock->expects($this->never())->method('d3sendUserManagerMailToCustom')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$this->_oModel = $oModelMock;
$this->assertInstanceOf(
Remark::class,
$this->callMethod(
$this->_oModel,
'd3SetUserManagerMailRecipients',
[d3GetOxidDIC()->get('d3ox.usermanager.'.Shop::class)]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3SetUserManagerMailRecipients
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canSetUserManagerMailRecipientsCustom()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomerRecipient',
'd3sendUserManagerMailToCustomer',
'd3hasUserManagerOwnerRecipient',
'd3sendUserManagerMailToOwner',
'd3hasUserManagerCustomRecipient',
'd3sendUserManagerMailToCustom',
])
->getMock();
$oModelMock->method('d3hasUserManagerCustomerRecipient')->willReturn(false);
$oModelMock->expects($this->never())->method('d3sendUserManagerMailToCustomer')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$oModelMock->method('d3hasUserManagerOwnerRecipient')->willReturn(false);
$oModelMock->expects($this->never())->method('d3sendUserManagerMailToOwner')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$oModelMock->method('d3hasUserManagerCustomRecipient')->willReturn(true);
$oModelMock->expects($this->once())->method('d3sendUserManagerMailToCustom')->willReturn(d3GetOxidDIC()->get('d3ox.usermanager.' . Remark::class));
$this->_oModel = $oModelMock;
$this->assertInstanceOf(
Remark::class,
$this->callMethod(
$this->_oModel,
'd3SetUserManagerMailRecipients',
[d3GetOxidDIC()->get('d3ox.usermanager.'.Shop::class)]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerMailOption
* @test
* @throws ReflectionException
*/
public function canGgetUserManagerMailOptionEdited()
{
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getValue',
'getEditedValues',
])
->getMock();
$oManagerMock->expects($this->never())->method('getValue')->willReturn('objectProperty');
$oManagerMock->expects($this->once())->method('getEditedValues')->willReturn(['editedVar' => 'editedProperty']);
$this->setValue(
$this->_oModel,
'oUserManager',
$oManagerMock
);
$this->callMethod(
$this->_oModel,
'd3getUserManagerMailOption',
['editedVar']
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerMailOption
* @test
* @throws ReflectionException
*/
public function canGgetUserManagerMailOptionObject()
{
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getValue',
'getEditedValues',
])
->getMock();
$oManagerMock->expects($this->once())->method('getValue')->willReturn('objectProperty');
$oManagerMock->expects($this->once())->method('getEditedValues')->willReturn(['editedVar' => 'editedProperty']);
$this->setValue(
$this->_oModel,
'oUserManager',
$oManagerMock
);
$this->callMethod(
$this->_oModel,
'd3getUserManagerMailOption',
['objectVar']
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3hasUserManagerCustomerRecipient
* @test
* @throws ReflectionException
*/
public function canHasUserManagerCustomerRecipient()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3getUserManagerMailOption'])
->getMock();
$oModelMock->expects($this->once())->method('d3getUserManagerMailOption')->with(
$this->stringContains('Customer')
)->willReturn('returnValue');
$this->_oModel = $oModelMock;
$this->assertSame(
'returnValue',
$this->callMethod(
$this->_oModel,
'd3hasUserManagerCustomerRecipient'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3hasUserManagerOwnerRecipient
* @test
* @throws ReflectionException
*/
public function canHasUserManagerOwnerRecipient()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3getUserManagerMailOption'])
->getMock();
$oModelMock->expects($this->once())->method('d3getUserManagerMailOption')->with(
$this->stringContains('Owner')
)->willReturn('returnValue');
$this->_oModel = $oModelMock;
$this->assertSame(
'returnValue',
$this->callMethod(
$this->_oModel,
'd3hasUserManagerOwnerRecipient'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3hasUserManagerCustomRecipient
* @test
* @throws ReflectionException
*/
public function canHasUserManagerCustomRecipient()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3getUserManagerMailOption'])
->getMock();
$oModelMock->expects($this->once())->method('d3getUserManagerMailOption')->with(
$this->stringContains('Custom')
)->willReturn('returnValue');
$this->_oModel = $oModelMock;
$this->assertSame(
'returnValue',
$this->callMethod(
$this->_oModel,
'd3hasUserManagerCustomRecipient'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerCustomRecipientList
* @test
* @throws ReflectionException
*/
public function canGetUserManagerCustomRecipientList()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3getUserManagerMailOption'])
->getMock();
$oModelMock->expects($this->once())->method('d3getUserManagerMailOption')->with(
$this->stringContains('CustomAddress')
)->willReturn('returnValue');
$this->_oModel = $oModelMock;
$this->assertSame(
'returnValue',
$this->callMethod(
$this->_oModel,
'd3getUserManagerCustomRecipientList'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getUserManagerMailContent
* @test
* @throws ReflectionException
* @throws Exception
* @dataProvider canGetUserManagerMailContentEmptyExceptionDataProvider
*/
public function canGetUserManagerMailContentEmptyException($throwException)
{
$expected = [
'html' => '',
'subject' => '',
'plain' => '',
];
if ($throwException) {
$this->expectException(emptyMessageException::class);
}
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getEditedValues', 'getFieldData'])
->getMock();
$oManagerMock->method('getEditedValues')->willReturn(
['mail' => [
'html' => '',
'subject' => '',
'plain' => '',
'genplain' => 1,
]]
);
$oManagerMock->method('getFieldData')->willReturn('fieldData');
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3HasUserManagerEditorMailContent', 'd3generateUserManagerPlainContent'])
->getMock();
$oModelMock->method('d3HasUserManagerEditorMailContent')->willReturn(true);
$oModelMock->expects($this->once())->method('d3generateUserManagerPlainContent')->with(
$this->identicalTo('')
)->willReturn('');
$this->assertSame(
$expected,
$this->callMethod(
$oModelMock,
'getUserManagerMailContent',
[ $oManagerMock, $throwException ]
)
);
}
/**
* @return array
*/
public function canGetUserManagerMailContentEmptyExceptionDataProvider(): array
{
return [
'throw exception' => [true],
'dont throw exception' => [false],
];
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getUserManagerMailContent
* @test
* @throws ReflectionException
* @throws Exception
* @dataProvider canGetUserManagerMailContentEditedDataProvider
*/
public function canGetUserManagerMailContentEdited($generatePlain)
{
$expected = [
'html' => 'contentHtml',
'subject' => 'contentSubject',
'plain' => $generatePlain ? 'contentPlainFromHtml' : 'contentPlain',
];
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getEditedValues',
])
->getMock();
$oManagerMock->method('getEditedValues')->willReturn(
['mail' => [
'html' => 'contentHtml',
'subject' => 'contentSubject',
'plain' => 'contentPlain',
'genplain' => $generatePlain,
]]
);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3HasUserManagerEditorMailContent', 'd3generateUserManagerPlainContent'])
->getMock();
$oModelMock->method('d3HasUserManagerEditorMailContent')->willReturn(true);
$oModelMock->expects($this->exactly($generatePlain))->method('d3generateUserManagerPlainContent')->with(
$this->identicalTo('contentHtml')
)->willReturn('contentPlainFromHtml');
$this->_oModel = $oModelMock;
$this->assertSame(
$expected,
$this->callMethod(
$this->_oModel,
'getUserManagerMailContent',
[$oManagerMock]
)
);
}
/**
* @return \int[][]
*/
public function canGetUserManagerMailContentEditedDataProvider(): array
{
return [
'no plain generator' => [0],
'use plain generator' => [1],
];
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getUserManagerMailContent
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canGetUserManagerMailContentCms()
{
$expected = [
'html' => 'content',
'subject' => 'contentField',
'plain' => 'content',
];
/** @var User|MockObject $oItemMock */
$oItemMock = $this->getMockBuilder(User::class)
->onlyMethods([
'getFieldData',
])
->getMock();
$oItemMock->method('getFieldData')->willReturn(1);
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getValue',
'getCurrentItem',
])
->getMock();
$getValueMap = [['sSendMailFromContentname', 'cmsIdent'], ['sSendMailFromContentnamePlain', 'cmsIdentPlain'], ['sSendMailFromSource', 'cms']];
$oManagerMock->method('getValue')->willReturnMap($getValueMap);
$oManagerMock->method('getCurrentItem')->willReturn($oItemMock);
/** @var Content|MockObject $contentMock */
$contentMock = $this->getMockBuilder(Content::class)
->onlyMethods(['load', 'getFieldData'])
->disableOriginalConstructor()
->getMock();
$contentMock->expects($this->once())->method('load')->with(
$this->identicalTo('cmsIdent')
)->willReturnSelf();
$contentMock->expects($this->atLeastOnce())->method('getFieldData')->willReturn('contentField');
/** @var MessageContentGenerator|MockObject $messageContentGeneratorMock */
$messageContentGeneratorMock = $this->getMockBuilder(MessageContentGenerator::class)
->onlyMethods(['generateFromCms'])
->disableOriginalConstructor()
->getMock();
$messageContentGeneratorMock->expects($this->exactly(2))->method('generateFromCms')->willReturn('content');
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['getMessageContentGeneratorUserManager', 'd3GetUserManagerContentObject'])
->getMock();
$oModelMock->method('getMessageContentGeneratorUserManager')->willReturn($messageContentGeneratorMock);
$oModelMock->method('d3GetUserManagerContentObject')->willReturn($contentMock);
$this->_oModel = $oModelMock;
$this->assertSame(
$expected,
$this->callMethod(
$this->_oModel,
'getUserManagerMailContent',
[$oManagerMock]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getUserManagerMailContent
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canGetUserManagerMailContentAdminTpl()
{
$expected = [
'html' => 'content',
'subject' => 'content',
'plain' => 'content',
];
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getValue',
'getCurrentItem',
])
->getMock();
$getValueMap = [
['sSendMailFromTheme', 'admin'],
['sSendMailFromSource', 'template'],
['sSendMailFromTemplatename', 'myTemplate'],
['sSendMailFromSubject', 'mySubject'],
['sSendMailFromTemplatenamePlain', 'myPlainTemplate'],
];
$oManagerMock->method('getValue')->willReturnMap($getValueMap);
/** @var MessageContentGenerator|MockObject $messageContentGeneratorMock */
$messageContentGeneratorMock = $this->getMockBuilder(MessageContentGenerator::class)
->onlyMethods(['setTemplateFrom', 'generateFromTpl'])
->disableOriginalConstructor()
->getMock();
$messageContentGeneratorMock->expects($this->atLeastOnce())->method('setTemplateFrom')->with($this->equalTo(MessageContentGenerator::TEMPLATE_FROM_ADMIN));
$messageContentGeneratorMock->expects($this->exactly(3))->method('generateFromTpl')->willReturn('content');
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['getMessageContentGeneratorUserManager'])
->getMock();
$oModelMock->method('getMessageContentGeneratorUserManager')->willReturn($messageContentGeneratorMock);
$this->_oModel = $oModelMock;
$this->assertSame(
$expected,
$this->callMethod(
$this->_oModel,
'getUserManagerMailContent',
[$oManagerMock]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getUserManagerMailContent
* @test
* @throws ReflectionException
* @throws Exception
*/
public function canGetUserManagerMailContentFrontendTpl()
{
$expected = [
'html' => 'content',
'subject' => 'content',
'plain' => 'content',
];
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods([
'getValue',
])
->getMock();
$getValueMap = [
['sSendMailFromTheme', 'frontend'],
['sSendMailFromSource', 'template'],
['sSendMailFromTemplatename', 'myTemplate'],
['sSendMailFromSubject', 'mySubject'],
['sSendMailFromTemplatenamePlain', 'myPlainTemplate'],
];
$oManagerMock->method('getValue')->willReturnMap($getValueMap);
/** @var MessageContentGenerator|MockObject $messageContentGeneratorMock */
$messageContentGeneratorMock = $this->getMockBuilder(MessageContentGenerator::class)
->onlyMethods(['setTemplateFrom', 'generateFromTpl'])
->disableOriginalConstructor()
->getMock();
$messageContentGeneratorMock->expects($this->atLeastOnce())->method('setTemplateFrom')->with($this->equalTo(MessageContentGenerator::TEMPLATE_FROM_FRONTEND));
$messageContentGeneratorMock->expects($this->exactly(3))->method('generateFromTpl')->willReturn('content');
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['getMessageContentGeneratorUserManager'])
->getMock();
$oModelMock->method('getMessageContentGeneratorUserManager')->willReturn($messageContentGeneratorMock);
$this->_oModel = $oModelMock;
$this->assertSame(
$expected,
$this->callMethod(
$this->_oModel,
'getUserManagerMailContent',
[$oManagerMock]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3GetUserManagerContentObject
* @test
* @throws ReflectionException
*/
public function d3GetUserManagerContentObjectReturnsRightInstance()
{
$this->assertInstanceOf(
Content::class,
$this->callMethod(
$this->_oModel,
'd3GetUserManagerContentObject'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getD3UserManagerStrObject
* @test
* @throws ReflectionException
*/
public function getD3UserManagerStrObjectReturnsRightInstance()
{
$this->assertInstanceOf(
d3str::class,
$this->callMethod(
$this->_oModel,
'getD3UserManagerStrObject'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3HasUserManagerEditorMailContentPass()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3isUserManagerArrayEditorMailContent'])
->getMock();
$oModelMock->method('d3isUserManagerArrayEditorMailContent')->willReturn(true);
$this->_oModel = $oModelMock;
$aEditedValues = [
'mail' => [
'subject' => 'subjectContent',
'html' => 'htmlContent',
'plain' => 'plainContent',
],
];
$this->assertTrue(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3HasUserManagerEditorMailContentIsNoArray()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3isUserManagerArrayEditorMailContent'])
->getMock();
$oModelMock->method('d3isUserManagerArrayEditorMailContent')->willReturn(false);
$this->_oModel = $oModelMock;
$aEditedValues = [
'mail' => [
'subject' => 'subjectContent',
'html' => 'htmlContent',
'plain' => 'plainContent',
],
];
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3HasUserManagerEditorMailContentIsNoSubject()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3isUserManagerArrayEditorMailContent'])
->getMock();
$oModelMock->method('d3isUserManagerArrayEditorMailContent')->willReturn(true);
$this->_oModel = $oModelMock;
$aEditedValues = [
'mail' => [
'subject' => false,
'html' => 'htmlContent',
'plain' => 'plainContent',
],
];
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3HasUserManagerEditorMailContentIsNoHtml()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3isUserManagerArrayEditorMailContent'])
->getMock();
$oModelMock->method('d3isUserManagerArrayEditorMailContent')->willReturn(true);
$this->_oModel = $oModelMock;
$aEditedValues = [
'mail' => [
'subject' => 'subjectContent',
'html' => false,
'plain' => 'plainContent',
],
];
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3HasUserManagerEditorMailContentIsNoPlain()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3isUserManagerArrayEditorMailContent'])
->getMock();
$oModelMock->method('d3isUserManagerArrayEditorMailContent')->willReturn(true);
$this->_oModel = $oModelMock;
$aEditedValues = [
'mail' => [
'subject' => 'subjectContent',
'html' => 'htmlContent',
'plain' => false,
],
];
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3isUserManagerArrayEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3isUserManagerArrayEditorMailContentPass()
{
$aEditedValues = [
'mail' => [],
];
$this->assertTrue(
$this->callMethod(
$this->_oModel,
'd3isUserManagerArrayEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3isUserManagerArrayEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3isUserManagerArrayEditorMailContentNoMailArray()
{
$aEditedValues = [];
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3isUserManagerArrayEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3isUserManagerArrayEditorMailContent
* @test
* @throws ReflectionException
*/
public function d3isUserManagerArrayEditorMailContentNoValuesArray()
{
$aEditedValues = null;
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3isUserManagerArrayEditorMailContent',
[$aEditedValues]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3generateUserManagerPlainContent
* @test
* @throws ReflectionException
*/
public function canGeneratePlainContent()
{
/** @var Html2Text|MockObject $oHtml2TextMock */
$oHtml2TextMock = $this->getMockBuilder(Html2Text::class)
->onlyMethods(['getText'])
->getMock();
$oHtml2TextMock->expects($this->once())->method('getText')->willReturn('plainContent');
d3GetOxidDIC()->set(Html2Text::class, $oHtml2TextMock);
$this->assertSame(
'plainContent',
$this->callMethod(
$this->_oModel,
'd3generateUserManagerPlainContent',
[
'HtmlContent',
]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3sendUserManagerMailToOwner
* @test
* @throws ReflectionException
*/
public function canSendUserManagerMailToOwner()
{
/** @var Shop|MockObject $oFieldMock */
$oFieldMock = $this->getMockBuilder(Shop::class)
->addMethods(['getRawValue'])
->getMock();
$oFieldMock->method('getRawValue')->willReturn('shopName');
/** @var Shop|MockObject $oShopMock */
$oShopMock = $this->getMockBuilder(Shop::class)
->onlyMethods([
'__get',
'getFieldData',
])
->getMock();
$oShopMock->method('__get')->willReturn($oFieldMock);
$oShopMock->method('getFieldData')->willReturn('info@mail.com');
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'setRecipient',
'd3HasUserManagerCustomMailAddresses',
'd3getUserManagerCustomMailAddressList',
'AddBcc',
'd3generateUserManagerRemark',
])
->getMock();
$oModelMock->expects($this->once())->method('setRecipient')->willReturn(true);
$oModelMock->method('d3HasUserManagerCustomMailAddresses')->willReturn(true);
$oModelMock->expects($this->exactly(2))->method('AddBcc')->willReturn(true);
$oModelMock->method('d3getUserManagerCustomMailAddressList')->willReturn(
[
'mail1',
'mail2',
]
);
$returnValue = oxNew(Remark::class);
$oModelMock->method('d3generateUserManagerRemark')->willReturn($returnValue);
$this->_oModel = $oModelMock;
$this->assertSame(
$returnValue,
$this->callMethod(
$this->_oModel,
'd3sendUserManagerMailToOwner',
[$oShopMock]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3sendUserManagerMailToCustom
* @test
* @throws ReflectionException
*/
public function canSendUserManagerMailToCustom()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomMailAddresses',
'd3getUserManagerCustomMailAddressList',
'setRecipient',
'd3generateUserManagerRemark',
])
->getMock();
$oModelMock->expects($this->once())->method('d3HasUserManagerCustomMailAddresses')->willReturn(true);
$oModelMock->expects($this->exactly(2))->method('setRecipient')->willReturn(true);
$oModelMock->method('d3getUserManagerCustomMailAddressList')->willReturn(
[
'mail1',
'mail2',
]
);
$returnValue = oxNew(Remark::class);
$oModelMock->method('d3generateUserManagerRemark')->willReturn($returnValue);
$this->_oModel = $oModelMock;
$this->assertSame(
$returnValue,
$this->callMethod(
$this->_oModel,
'd3sendUserManagerMailToCustom'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerCustomMailAddressList
* @test
* @throws ReflectionException
*/
public function canExtractCustomMailAddressList()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods(['d3getUserManagerCustomRecipientList'])
->getMock();
$oModelMock->expects($this->once())->method('d3getUserManagerCustomRecipientList')->willReturn(
'mailNo1; mailNo2; '
);
$this->_oModel = $oModelMock;
$this->assertSame(
[
'mailNo1',
'mailNo2',
],
$this->callMethod(
$this->_oModel,
'd3getUserManagerCustomMailAddressList'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerCustomMailAddresses
* @test
* @throws ReflectionException
*/
public function hasUserManagerCustomMailAddressesPass()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomRecipient',
'd3getUserManagerCustomRecipientList',
])
->getMock();
$oModelMock->method('d3hasUserManagerCustomRecipient')->willReturn(true);
$oModelMock->method('d3getUserManagerCustomRecipientList')->willReturn(true);
$this->_oModel = $oModelMock;
$this->assertTrue(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerCustomMailAddresses'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerCustomMailAddresses
* @test
* @throws ReflectionException
*/
public function hasUserManagerCustomMailAddressesNoCustRecipient()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomRecipient',
'd3getUserManagerCustomRecipientList',
])
->getMock();
$oModelMock->method('d3hasUserManagerCustomRecipient')->willReturn(false);
$oModelMock->method('d3getUserManagerCustomRecipientList')->willReturn(true);
$this->_oModel = $oModelMock;
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerCustomMailAddresses'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3HasUserManagerCustomMailAddresses
* @test
* @throws ReflectionException
*/
public function hasUserManagerCustomMailAddressesNoCustRecipientList()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3hasUserManagerCustomRecipient',
'd3getUserManagerCustomRecipientList',
])
->getMock();
$oModelMock->method('d3hasUserManagerCustomRecipient')->willReturn(true);
$oModelMock->method('d3getUserManagerCustomRecipientList')->willReturn(false);
$this->_oModel = $oModelMock;
$this->assertFalse(
$this->callMethod(
$this->_oModel,
'd3HasUserManagerCustomMailAddresses'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3GetUserManagerRemark
* @test
* @throws ReflectionException
*/
public function d3GetRemarkReturnsRightInstance()
{
$this->assertInstanceOf(
Remark::class,
$this->callMethod(
$this->_oModel,
'd3GetUserManagerRemark'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3sendUserManagerMailToCustomer
* @test
* @throws ReflectionException
*/
public function canD3sendUserManagerMailToCustomerNoOrderUser()
{
/** @var Field|MockObject $oFieldMock */
$oFieldMock = $this->getMockBuilder(Field::class)
->onlyMethods(['getRawValue'])
->getMock();
$oFieldMock->method('getRawValue')->willReturn('rawValue');
/** @var Shop|MockObject $oShopMock */
$oShopMock = $this->getMockBuilder(Shop::class)
->onlyMethods([
'getFieldData',
'__get',
])
->getMock();
$oShopMock->method('getFieldData')->willReturn('fieldData');
$oShopMock->method('__get')->willReturn($oFieldMock);
/** @var User|MockObject $oOrderUserMock */
$oOrderUserMock = $this->getMockBuilder(User::class)
->onlyMethods([
'getId',
'__get',
'getFieldData',
])
->getMock();
$oOrderUserMock->method('getId')->willReturn(false);
$oOrderUserMock->expects($this->never())->method('__get')->willReturn($oFieldMock);
$oOrderUserMock->method('getFieldData')->willReturn('fieldData');
/** @var User|MockObject $oItemMock */
$oItemMock = $this->getMockBuilder(User::class)
->addMethods([
'getOrderUser',
])
->onlyMethods([
'__get',
'getFieldData',
])
->getMock();
$oItemMock->method('getOrderUser')->willReturn($oOrderUserMock);
$oItemMock->expects($this->exactly(2))->method('__get')->willReturn($oFieldMock);
$oItemMock->method('getFieldData')->willReturn('fieldData');
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getCurrentItem'])
->getMock();
$oManagerMock->method('getCurrentItem')->willReturn($oItemMock);
/** @var Remark|MockObject $oRemarkMock */
$oRemarkMock = $this->getMockBuilder(Remark::class)
->onlyMethods(['assign'])
->getMock();
$oRemarkMock->expects($this->once())->method('assign')->willReturn(true);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'setRecipient',
'd3hasUserManagerOwnerRecipient',
'AddBcc',
'd3HasUserManagerCustomMailAddresses',
'd3getUserManagerCustomMailAddressList',
'd3GetUserManagerRemark',
])
->getMock();
$oModelMock->method('setRecipient')->willReturn(true);
$oModelMock->method('d3hasUserManagerOwnerRecipient')->willReturn(true);
$oModelMock->expects($this->exactly(3))->method('AddBcc')->willReturn(true);
$oModelMock->method('d3HasUserManagerCustomMailAddresses')->willReturn(true);
$oModelMock->method('d3getUserManagerCustomMailAddressList')->willReturn([ 'addrNo1', 'addrNo2']);
$oModelMock->method('d3GetUserManagerRemark')->willReturn($oRemarkMock);
$this->_oModel = $oModelMock;
$this->setValue(
$this->_oModel,
'oUserManager',
$oManagerMock
);
$this->assertInstanceOf(
Remark::class,
$this->callMethod(
$this->_oModel,
'd3sendUserManagerMailToCustomer',
[$oShopMock]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3SetUserManagerReplyAddress
* @test
* @throws ReflectionException
*/
public function canSetUserManagerReplyAddressWithReply()
{
/** @var Field|MockObject $oFieldMock */
$oFieldMock = $this->getMockBuilder(Field::class)
->onlyMethods(['getRawValue'])
->getMock();
$oFieldMock->method('getRawValue')->willReturn('rawValue');
/** @var Shop|MockObject $oShopMock */
$oShopMock = $this->getMockBuilder(Shop::class)
->onlyMethods([
'__get',
'getFieldData',
])
->getMock();
$oShopMock->method('__get')->willReturn($oFieldMock);
$oShopMock->method('getFieldData')->willReturn('fieldData');
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getValue'])
->getMock();
$getValueMap = [
['sSendMailReplyAddress', 'reply@test.com'],
];
$oManagerMock->method('getValue')->willReturnMap($getValueMap);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'setFrom',
'setReplyTo',
])
->getMock();
$oModelMock->expects($this->once())->method('setFrom')->willReturn(true);
$oModelMock->expects($this->once())->method('setReplyTo')->willReturn(true);
$this->_oModel = $oModelMock;
$this->callMethod(
$this->_oModel,
'd3SetUserManagerReplyAddress',
[$oManagerMock, $oShopMock]
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3SetUserManagerReplyAddress
* @test
* @throws ReflectionException
*/
public function canSetUserManagerReplyAddressWithoutReply()
{
/** @var Field|MockObject $oFieldMock */
$oFieldMock = $this->getMockBuilder(Field::class)
->onlyMethods(['getRawValue'])
->getMock();
$oFieldMock->method('getRawValue')->willReturn('rawValue');
/** @var Shop|MockObject $oShopMock */
$oShopMock = $this->getMockBuilder(Shop::class)
->onlyMethods([
'__get',
'getFieldData',
])
->getMock();
$oShopMock->method('__get')->willReturn($oFieldMock);
$oShopMock->method('getFieldData')->willReturn('fieldData');
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getValue'])
->getMock();
$getValueMap = [
['sSendMailReplyAddress', null],
];
$oManagerMock->method('getValue')->willReturnMap($getValueMap);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'setFrom',
'setReplyTo',
])
->getMock();
$oModelMock->expects($this->atLeastOnce())->method('setFrom')->willReturn(true);
$oModelMock->expects($this->atLeastOnce())->method('setReplyTo')->willReturn(true);
$this->_oModel = $oModelMock;
$this->callMethod(
$this->_oModel,
'd3SetUserManagerReplyAddress',
[$oManagerMock, $oShopMock]
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3generateUserManagerRemark
* @test
* @throws ReflectionException
*/
public function canGenerateRemark()
{
/** @var Remark|MockObject $remarkMock */
$remarkMock = $this->getMockBuilder(Remark::class)
->onlyMethods(['assign'])
->getMock();
$remarkMock->method('assign')->with($this->isType('array'))->willReturn(true);
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'd3GetUserManagerRemark',
'getAllRecipientAddresses',
'getBody',
'getAltBody',
])
->getMock();
$oModelMock->expects($this->once())->method('d3GetUserManagerRemark')->willReturn($remarkMock);
$oModelMock->expects($this->any())->method('getAllRecipientAddresses')->willReturn(
[
'key1' => 'value1',
'key2' => 'value2',
]
);
$oModelMock->expects($this->any())->method('getBody')->willReturn('testBody');
$oModelMock->expects($this->any())->method('getAltBody')->willReturn('testAltBody');
$this->_oModel = $oModelMock;
/** @var User|MockObject $oItemMock */
$oItemMock = $this->getMockBuilder(User::class)
->onlyMethods(['getId'])
->getMock();
$oItemMock->method('getId')->willReturn('userId');
/** @var User|MockObject $oItemMock */
$oItemMock = $this->getMockBuilder(User::class)
->addMethods(['getOrderUser'])
->getMock();
$oItemMock->method('getOrderUser')->willReturn($oItemMock);
/** @var d3usermanager|MockObject $oManagerMock */
$oManagerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getCurrentItem'])
->getMock();
$oManagerMock->expects($this->any())->method('getCurrentItem')->willReturn($oItemMock);
$this->setValue(
$this->_oModel,
'oUserManager',
$oManagerMock
);
$this->assertSame(
$remarkMock,
$this->callMethod(
$this->_oModel,
'd3generateUserManagerRemark'
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerRemarkText
* @test
* @throws ReflectionException
*/
public function canGetRemarkText()
{
/** @var d3_oxemail_usermanager|MockObject $oModelMock */
$oModelMock = $this->getMockBuilder(Email::class)
->onlyMethods([
'getAllRecipientAddresses',
'getBody',
'getAltBody',
])
->getMock();
$oModelMock->expects($this->any())->method('getAllRecipientAddresses')->willReturn(
[
'key1' => 'value1',
'key2' => 'value2',
]
);
$oModelMock->expects($this->any())->method('getBody')->willReturn('testBody');
$oModelMock->expects($this->any())->method('getAltBody')->willReturn('testAltBody');
$this->_oModel = $oModelMock;
$this->assertEquals(
'Recipients:'.
PHP_EOL.'---'.PHP_EOL.
'key1, key2'.
PHP_EOL.'---'.PHP_EOL.
'HTML:'.
PHP_EOL.'---'.PHP_EOL.
'testBody'.
PHP_EOL.'---'.PHP_EOL.
'Plain'.
PHP_EOL.'---'.PHP_EOL.
'testAltBody',
$this->callMethod(
$this->_oModel,
'd3getUserManagerRemarkText'
)
);
}
/**
* @param $sLicenseKey
* @param d3usermanager $oManager
* @return null
*/
protected function _setModuleLicenseKey($sLicenseKey, $oManager = null)
{
return null;
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3getUserManagerDIContainer
* @test
* @throws ReflectionException
*/
public function getDIContainerHasRightInstance()
{
$this->assertInstanceOf(
ContainerInterface::class,
$this->callMethod(
$this->_oModel,
'd3getUserManagerDIContainer'
)
);
}
/**
* @test
* @return void
* @throws ReflectionException
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::getMessageContentGeneratorUserManager
*/
public function getMessageContentGeneratorHasRightInstance()
{
/** @var d3usermanager|MockObject $managerMock */
$managerMock = $this->getMockBuilder(d3usermanager::class)
->onlyMethods(['getCurrentItem'])
->disableOriginalConstructor()
->getMock();
$managerMock->method('getCurrentItem')->willReturn(oxNew(User::class));
$this->assertInstanceOf(
MessageContentGenerator::class,
$this->callMethod(
$this->_oModel,
'getMessageContentGeneratorUserManager',
[$managerMock]
)
);
}
/**
* @covers \D3\Usermanager\Modules\Application\Model\d3_oxemail_usermanager::d3UserManagerThrowUnequalContentException
* @test
* @throws ReflectionException
*/
public function throwUnequalContentExceptionHasRightInstance()
{
$this->expectException(d3usermanager_templaterendererExceptionInterface::class);
$this->callMethod(
$this->_oModel,
'd3UserManagerThrowUnequalContentException'
);
}
}