Completed
Pull Request — master (#30)
by Jaap
12:07
created

DefaultHeadersTest::testLayoutHeadersIsMutable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 5
rs 9.4285
c 1
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
/**
3
 * MtMail - e-mail module for Zend Framework 2
4
 *
5
 * @link      http://github.com/mtymek/MtMail
6
 * @copyright Copyright (c) 2013-2014 Mateusz Tymek
7
 * @license   BSD 2-Clause
8
 */
9
10
namespace MtMailTest\Plugin;
11
12
use MtMail\Event\ComposerEvent;
13
use MtMail\ComposerPlugin\DefaultHeaders;
14
use MtMailTest\Test\HeadersProviderTemplate;
15
use MtMailTest\Test\HeaderObjectProviderTemplate;
16
use Zend\Mail\Header\Subject;
17
use Zend\Mail\Message;
18
19
class DefaultHeadersTest extends \PHPUnit_Framework_TestCase
20
{
21
    /**
22
     * @var DefaultHeaders
23
     */
24
    protected $plugin;
25
26
    public function setUp()
27
    {
28
        $this->plugin = new DefaultHeaders();
29
    }
30
31
    public function testLayoutHeadersIsMutable()
32
    {
33
        $this->plugin->setHeaders(['from' => '[email protected]']);
34
        $this->assertEquals(['from' => '[email protected]'], $this->plugin->getHeaders());
35
    }
36
37
    public function testInjectDefaultHeadersSetsHeaders()
38
    {
39
        $this->plugin->setHeaders([
40
                'from' => '[email protected]',
41
                'subject' => 'Hello!',
42
            ]);
43
        $headers = $this->getMock('Zend\Mail\Headers', ['addHeaderLine']);
44
        $headers->expects($this->at(0))->method('addHeaderLine')->with('from', '[email protected]');
45
        $headers->expects($this->at(1))->method('addHeaderLine')->with('subject', 'Hello!');
46
        $message = new Message();
47
        $message->setHeaders($headers);
48
        $event = new ComposerEvent();
49
        $event->setMessage($message);
50
        $this->plugin->injectDefaultHeaders($event);
51
    }
52
53
    public function testPluginCanInjectTemplateSpecificHeaders()
54
    {
55
        $headers = $this->getMock('Zend\Mail\Headers', ['addHeaderLine']);
56
        $headers->expects($this->at(0))->method('addHeaderLine')->with('subject', 'Default subject');
57
        $template = new HeadersProviderTemplate();
58
        $message = new Message();
59
        $message->setHeaders($headers);
60
        $event = new ComposerEvent();
61
        $event->setMessage($message);
62
        $event->setTemplate($template);
63
        $this->plugin->injectDefaultHeaders($event);
64
    }
65
66
    public function testPluginCanInjectHeaderObjects()
67
    {
68
        $subject = (new Subject())->setSubject('Hello!');
69
        $this->plugin->setHeaders([
70
            'subject' => $subject,
71
        ]);
72
73
        $headers = $this->getMock('Zend\Mail\Headers', ['addHeader']);
74
        $headers->expects($this->at(0))->method('addHeader')->with($subject);
75
        $message = new Message();
76
        $message->setHeaders($headers);
77
        $event = new ComposerEvent();
78
        $event->setMessage($message);
79
        $this->plugin->injectDefaultHeaders($event);
80
    }
81
82
    public function testPluginCanInjectTemplateSpecificHeaderObjects()
83
    {
84
        $headers = $this->getMock('Zend\Mail\Headers', ['addHeader']);
85
        $headers->expects($this->at(0))->method('addHeader')->with((new Subject())->setSubject('Default subject'));
86
        $template = new HeaderObjectProviderTemplate();
87
        $message = new Message();
88
        $message->setHeaders($headers);
89
        $event = new ComposerEvent();
90
        $event->setMessage($message);
91
        $event->setTemplate($template);
92
        $this->plugin->injectDefaultHeaders($event);
93
    }
94
}
95