Skip to content

Commit 5e64d72

Browse files
author
Stanislav Idolov
authored
ENGCOM-3233: Cover \Magento\Email\Model\Template\SenderResolver class with Unit test #18707
2 parents 704cf59 + 846414f commit 5e64d72

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Email\Test\Unit\Model\Template;
9+
10+
use Magento\Email\Model\Template\SenderResolver;
11+
use Magento\Framework\Exception\MailException;
12+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
13+
use Magento\Framework\App\Config\ScopeConfigInterface;
14+
15+
/**
16+
* SenderResolverTest
17+
*/
18+
class SenderResolverTest extends \PHPUnit\Framework\TestCase
19+
{
20+
/**
21+
* @var SenderResolver
22+
*/
23+
private $senderResolver;
24+
25+
/**
26+
* @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
27+
*/
28+
private $scopeConfig;
29+
30+
/**
31+
* @return void
32+
*/
33+
public function setUp(): void
34+
{
35+
$objectManager = new ObjectManager($this);
36+
37+
$this->scopeConfig = $this->createMock(ScopeConfigInterface::class);
38+
39+
$this->senderResolver = $objectManager->getObject(
40+
SenderResolver::class,
41+
[
42+
'scopeConfig' => $this->scopeConfig
43+
]
44+
);
45+
}
46+
47+
/**
48+
* Test returned information for given sender's name and email
49+
*
50+
* @return void
51+
*/
52+
public function testResolve(): void
53+
{
54+
$sender = 'general';
55+
$scopeId = null;
56+
57+
$this->scopeConfig->expects($this->exactly(2))
58+
->method('getValue')
59+
->willReturnMap([
60+
[
61+
'trans_email/ident_' . $sender . '/name',
62+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
63+
$scopeId,
64+
'Test Name'
65+
],
66+
[
67+
'trans_email/ident_' . $sender . '/email',
68+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
69+
$scopeId,
70+
71+
]
72+
]);
73+
74+
$result = $this->senderResolver->resolve($sender);
75+
76+
$this->assertTrue(isset($result['name']));
77+
$this->assertEquals('Test Name', $result['name']);
78+
79+
$this->assertTrue(isset($result['email']));
80+
$this->assertEquals('[email protected]', $result['email']);
81+
}
82+
83+
/**
84+
* Test if exception is thrown in case there is no name or email in result
85+
*
86+
* @dataProvider dataProvidedSenderArray
87+
* @param array $sender
88+
*
89+
* @return void
90+
*/
91+
public function testResolveThrowException(array $sender): void
92+
{
93+
$this->expectExceptionMessage('Invalid sender data');
94+
$this->expectException(MailException::class);
95+
$this->senderResolver->resolve($sender);
96+
}
97+
98+
/**
99+
* @return array
100+
*/
101+
public function dataProvidedSenderArray()
102+
{
103+
return [
104+
[
105+
['name' => 'Name']
106+
],
107+
[
108+
['email' => '[email protected]']
109+
]
110+
];
111+
}
112+
}

0 commit comments

Comments
 (0)