testComposeFallsBackToDefaultHtmlTemplate()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 15
rs 9.4285
cc 1
eloc 12
nc 1
nop 0
1
<?php
2
/**
3
 * MtMail - e-mail module for Zend Framework
4
 *
5
 * @link      http://github.com/mtymek/MtMail
6
 * @copyright Copyright (c) 2013-2017 Mateusz Tymek
7
 * @license   BSD 2-Clause
8
 */
9
10
namespace MtMailTest\Service;
11
12
use MtMail\Service\Composer;
13
use MtMail\Service\Mail;
14
use MtMail\Service\Sender;
15
use MtMail\Service\TemplateManager;
16
use MtMail\Template\SimpleHtml;
17
use MtMail\Template\TemplateInterface;
18
use Prophecy\Argument;
19
use Zend\Mail\Message;
20
use Zend\View\Model\ModelInterface;
21
22
class MailTest extends \PHPUnit\Framework\TestCase
23
{
24
    /**
25
     * @var Mail
26
     */
27
    protected $service;
28
29
    public function testSendProxiesToSender()
30
    {
31
        $message = new Message();
32
        $sender = $this->prophesize(Sender::class);
33
        $sender->send($message)->shouldBeCalled();
34
35
        $composer = $this->prophesize(Composer::class);
36
        $templateManager = $this->prophesize(TemplateManager::class);
37
        $service = new Mail($composer->reveal(), $sender->reveal(), $templateManager->reveal());
38
        $service->send($message);
39
    }
40
41
    public function testComposeProxiesToComposer()
42
    {
43
        $sender = $this->prophesize(Sender::class);
44
        $template = $this->prophesize(TemplateInterface::class);
45
        $composer = $this->prophesize(Composer::class);
46
        $composer->compose(
47
            ['to' => '[email protected]'],
48
            $template,
49
            Argument::type(ModelInterface::class)
50
        )->shouldBeCalled();
51
        $templateManager = $this->prophesize(TemplateManager::class);
52
        $service = new Mail($composer->reveal(), $sender->reveal(), $templateManager->reveal());
53
        $service->compose(['to' => '[email protected]'], $template->reveal());
54
    }
55
56
    public function testComposeTriesPullsTemplateFromManager()
57
    {
58
        $sender = $this->prophesize(Sender::class);
59
        $composer = $this->prophesize(Composer::class);
60
        $templateManager = $this->prophesize(TemplateManager::class);
61
        $templateManager->has('FooTemplate')->willReturn(true);
62
        $templateManager->get('FooTemplate')->willReturn($this->prophesize(TemplateInterface::class)->reveal());
63
        $service = new Mail($composer->reveal(), $sender->reveal(), $templateManager->reveal());
64
        $service->compose(['to' => '[email protected]'], 'FooTemplate');
65
        $this->assertTrue(true);
66
    }
67
68
    public function testComposeFallsBackToDefaultHtmlTemplate()
69
    {
70
        $sender = $this->prophesize(Sender::class);
71
        $composer = $this->prophesize(Composer::class);
72
        $composer->compose(
73
            ['to' => '[email protected]'],
74
            Argument::type(SimpleHtml::class),
75
            Argument::type(ModelInterface::class)
76
        );
77
        $templateManager = $this->prophesize(TemplateManager::class);
78
        $templateManager->has('FooTemplate')->willReturn(false);
79
        $service = new Mail($composer->reveal(), $sender->reveal(), $templateManager->reveal());
80
        $service->compose(['to' => '[email protected]'], 'FooTemplate', []);
81
        $this->assertTrue(true);
82
    }
83
}
84