DefaultHeadersTest   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 6
c 2
b 0
f 0
lcom 1
cbo 8
dl 0
loc 78
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 4 1
A testLayoutHeadersIsMutable() 0 5 1
A testInjectDefaultHeadersSetsHeaders() 0 16 1
A testPluginCanInjectTemplateSpecificHeaders() 0 13 1
A testPluginCanInjectHeaderObjects() 0 15 1
A testPluginCanInjectTemplateSpecificHeaderObjects() 0 12 1
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\Plugin;
11
12
use MtMail\Event\ComposerEvent;
13
use MtMail\ComposerPlugin\DefaultHeaders;
14
use MtMailTest\Test\HeaderObjectProviderTemplate;
15
use MtMailTest\Test\HeadersProviderTemplate;
16
use PHPUnit\Framework\TestCase;
17
use Zend\Mail\Headers;
18
use Zend\Mail\Header\Subject;
19
use Zend\Mail\Message;
20
21
class DefaultHeadersTest extends TestCase
22
{
23
    /**
24
     * @var DefaultHeaders
25
     */
26
    protected $plugin;
27
28
    public function setUp()
29
    {
30
        $this->plugin = new DefaultHeaders();
31
    }
32
33
    public function testLayoutHeadersIsMutable()
34
    {
35
        $this->plugin->setHeaders(['from' => '[email protected]']);
36
        $this->assertEquals(['from' => '[email protected]'], $this->plugin->getHeaders());
37
    }
38
39
    public function testInjectDefaultHeadersSetsHeaders()
40
    {
41
        $this->plugin->setHeaders([
42
                'from' => '[email protected]',
43
                'subject' => 'Hello!',
44
            ]);
45
        $headers = $this->prophesize(Headers::class);
46
        $headers->setEncoding("ASCII")->shouldBeCalled();
47
        $headers->addHeaderLine('from', '[email protected]')->shouldBeCalled();
48
        $headers->addHeaderLine('subject', 'Hello!')->shouldBeCalled();
49
        $message = new Message();
50
        $message->setHeaders($headers->reveal());
51
        $event = new ComposerEvent();
52
        $event->setMessage($message);
53
        $this->plugin->injectDefaultHeaders($event);
54
    }
55
56
    public function testPluginCanInjectTemplateSpecificHeaders()
57
    {
58
        $headers = $this->prophesize(Headers::class);
59
        $headers->setEncoding("ASCII")->shouldBeCalled();
60
        $headers->addHeaderLine('subject', 'Default subject')->shouldBeCalled();
61
        $template = new HeadersProviderTemplate();
62
        $message = new Message();
63
        $message->setHeaders($headers->reveal());
64
        $event = new ComposerEvent();
65
        $event->setMessage($message);
66
        $event->setTemplate($template);
67
        $this->plugin->injectDefaultHeaders($event);
68
    }
69
70
    public function testPluginCanInjectHeaderObjects()
71
    {
72
        $subject = (new Subject())->setSubject('Hello!');
73
        $this->plugin->setHeaders([
74
            'subject' => $subject,
75
        ]);
76
77
        $headers = $this->prophesize(Headers::class);
78
        $headers->addHeader($subject);
79
        $message = new Message();
80
        $message->setHeaders($headers->reveal());
81
        $event = new ComposerEvent();
82
        $event->setMessage($message);
83
        $this->plugin->injectDefaultHeaders($event);
84
    }
85
86
    public function testPluginCanInjectTemplateSpecificHeaderObjects()
87
    {
88
        $headers = $this->prophesize(Headers::class);
89
        $headers->addHeader((new Subject())->setSubject('Default subject'));
90
        $template = new HeaderObjectProviderTemplate();
91
        $message = new Message();
92
        $message->setHeaders($headers->reveal());
93
        $event = new ComposerEvent();
94
        $event->setMessage($message);
95
        $event->setTemplate($template);
96
        $this->plugin->injectDefaultHeaders($event);
97
    }
98
}
99