diff --git a/application/Espo/Core/Mail/Importer.php b/application/Espo/Core/Mail/Importer.php
index 4c197f2db3..7184fea036 100644
--- a/application/Espo/Core/Mail/Importer.php
+++ b/application/Espo/Core/Mail/Importer.php
@@ -38,6 +38,7 @@ use Espo\Core\{
Notification\AssignmentNotificator,
Notification\AssignmentNotificatorFactory,
FieldProcessing\Relation\LinkMultipleSaver,
+ FieldProcessing\SaverParams,
};
use DateTime;
@@ -611,15 +612,13 @@ class Importer
->getRepository('Email')
->applyUsersFilters($duplicate);
- $this->linkMultipleSaver->process($duplicate, 'users', [
+ $saverParams = SaverParams::create()->withRawOptions([
'skipLinkMultipleRemove' => true,
'skipLinkMultipleUpdate' => true,
]);
- $this->linkMultipleSaver->process($duplicate, 'assignedUsers', [
- 'skipLinkMultipleRemove' => true,
- 'skipLinkMultipleUpdate' => true,
- ]);
+ $this->linkMultipleSaver->process($duplicate, 'users', $saverParams);
+ $this->linkMultipleSaver->process($duplicate, 'assignedUsers', $saverParams);
$this->notificator->process($duplicate, [
'isBeingImported' => true,
diff --git a/application/Espo/Core/Mail/MessageWrapper.php b/application/Espo/Core/Mail/MessageWrapper.php
index c6b72c1690..26c496d300 100644
--- a/application/Espo/Core/Mail/MessageWrapper.php
+++ b/application/Espo/Core/Mail/MessageWrapper.php
@@ -70,7 +70,7 @@ class MessageWrapper
public function getRawHeader(): string
{
- return $this->rawHeader;
+ return $this->rawHeader ?? '';
}
public function getParser(): ?Parser
@@ -94,7 +94,7 @@ class MessageWrapper
$this->rawContent = $this->storage->getRawContent($this->id);
}
- return $this->rawContent;
+ return $this->rawContent ?? '';
}
public function getFullRawContent(): string
diff --git a/tests/unit/Espo/Core/Mail/ImporterTest.php b/tests/unit/Espo/Core/Mail/ImporterTest.php
index ef5fe427d7..6efd28b971 100644
--- a/tests/unit/Espo/Core/Mail/ImporterTest.php
+++ b/tests/unit/Espo/Core/Mail/ImporterTest.php
@@ -32,29 +32,53 @@ namespace tests\unit\Espo\Core\Mail;
use Espo\Entities\Attachment;
use Espo\Entities\Email;
-use Espo\Core\Mail\Importer;
-use Espo\Core\Mail\MessageWrapper;
+use Espo\Core\{
+ Mail\Importer,
+ Mail\MessageWrapper,
+ Mail\ParserFactory,
+ Mail\Parsers\MailMimeParser,
+ Utils\Log,
+ ORM\EntityManager,
+ Utils\Config,
+ Repositories\Database,
+ Utils\Metadata,
+ Notification\AssignmentNotificatorFactory,
+ FieldProcessing\Relation\LinkMultipleSaver,
+};
+
+use Espo\ORM\Repository\RDBSelectBuilder;
class ImporterTest extends \PHPUnit\Framework\TestCase
{
- function setUp() : void
+ function setUp(): void
{
- $GLOBALS['log'] = $this->getMockBuilder('Espo\\Core\\Utils\\Log')->disableOriginalConstructor()->getMock();
+ $GLOBALS['log'] = $this->createMock(Log::class);
- $entityManager = $this->entityManager =
- $this->getMockBuilder('Espo\\Core\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
+ $entityManager = $this->entityManager = $this->createMock(EntityManager::class);
- $config = $this->config = $this->getMockBuilder('Espo\\Core\\Utils\\Config')->disableOriginalConstructor()->getMock();
+ $this->config = $this->createMock(Config::class);
- $emailRepository = $this->getMockBuilder('Espo\\Core\\Repositories\\Database')->disableOriginalConstructor()->getMock();
- $emptyRepository = $this->getMockBuilder('Espo\\Core\\Repositories\\Database')->disableOriginalConstructor()->getMock();
+ $emailRepository = $this->createMock(Database::class);
+ $emptyRepository = $this->createMock(Database::class);
- $metadata = $this->getMockBuilder('Espo\\ORM\\Metadata')->disableOriginalConstructor()->getMock();
+ $metadata = $this->createMock(Metadata::class);
- $pdo = $this->getMockBuilder('Pdo')->disableOriginalConstructor()->getMock();
+ $selectBuilder = $this->createMock(RDBSelectBuilder::class);
- $selectBuilder = $this->getMockBuilder('Espo\\ORM\\Repository\\RDBSelectBuilder')
- ->disableOriginalConstructor()->getMock();
+ $this->assignmentNotificatorFactory = $this->createMock(AssignmentNotificatorFactory::class);
+ $this->parserFactory = $this->createMock(ParserFactory::class);
+ $this->linkMultipleSaver = $this->createMock(LinkMultipleSaver::class);
+
+ $this->parserFactory
+ ->expects($this->any())
+ ->method('create')
+ ->will(
+ $this->returnCallback(
+ function () {
+ return new MailMimeParser($this->entityManager);
+ }
+ )
+ );
$emailRepository
->expects($this->any())
@@ -66,11 +90,6 @@ class ImporterTest extends \PHPUnit\Framework\TestCase
->method('select')
->will($this->returnValue($selectBuilder));
- $entityManager
- ->expects($this->any())
- ->method('getPdo')
- ->will($this->returnValue($pdo));
-
$entityManager
->expects($this->any())
->method('getMetadata')
@@ -95,7 +114,7 @@ class ImporterTest extends \PHPUnit\Framework\TestCase
$emailDefs = require('tests/unit/testData/Core/Mail/email_defs.php');
- $email = $this->email = new Email('Email', $emailDefs, $entityManager);
+ $this->email = new Email('Email', $emailDefs, $entityManager);
$attachmentDefs = require('tests/unit/testData/Core/Mail/attachment_defs.php');
@@ -106,7 +125,6 @@ class ImporterTest extends \PHPUnit\Framework\TestCase
function testImport1()
{
-
$entityManager = $this->entityManager;
$config = $this->config;
$email = $this->email;
@@ -119,7 +137,7 @@ class ImporterTest extends \PHPUnit\Framework\TestCase
$entityManager
->expects($this->exactly(2))
->method('saveEntity')
- ->with($this->isInstanceOf('\\Espo\\Entities\\Email'));
+ ->with($this->isInstanceOf(Email::class));
$entityManager
->expects($this->any())
@@ -130,13 +148,21 @@ class ImporterTest extends \PHPUnit\Framework\TestCase
$config
->expects($this->any())
->method('get')
- ->will($this->returnValueMap(array(
- array('b2cMode', false)
- )));
+ ->will(
+ $this->returnValueMap([
+ ['b2cMode', false]
+ ])
+ );
$contents = file_get_contents('tests/unit/testData/Core/Mail/test_email_1.eml');
- $importer = new Importer($entityManager, $config);
+ $importer = new Importer(
+ $entityManager,
+ $config,
+ $this->assignmentNotificatorFactory,
+ $this->parserFactory,
+ $this->linkMultipleSaver
+ );
$message = new MessageWrapper();
@@ -153,13 +179,8 @@ class ImporterTest extends \PHPUnit\Framework\TestCase
$userIdList = $email->getLinkMultipleIdList('users');
$this->assertTrue(in_array('userTestId', $userIdList));
- if (method_exists($this, 'assertStringContainsString')) { /* PHPUnit 7+ */
- $this->assertStringContainsString('
Admin Test', $email->get('body'));
- $this->assertStringContainsString('Admin Test', $email->get('bodyPlain'));
- } else { /* PHPUnit 6 */
- $this->assertContains('
Admin Test', $email->get('body'));
- $this->assertContains('Admin Test', $email->get('bodyPlain'));
- }
+ $this->assertStringContainsString('
Admin Test', $email->get('body'));
+ $this->assertStringContainsString('Admin Test', $email->get('bodyPlain'));
$this->assertEquals('', $email->get('messageId'));
}