SenderResolverTest.php 2.8 KB

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