Passed
Push — master ( 1feeb7...0bc89a )
by Mateusz
01:11
created

DefaultHeadersTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

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

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 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\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->getMock('Zend\Mail\Headers', ['addHeader']);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0; use createMock() or getMockBuilder() instead

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
78
        $headers->expects($this->at(0))->method('addHeader')->with($subject);
79
        $message = new Message();
80
        $message->setHeaders($headers);
81
        $event = new ComposerEvent();
82
        $event->setMessage($message);
83
        $this->plugin->injectDefaultHeaders($event);
84
    }
85
86
    public function testPluginCanInjectTemplateSpecificHeaderObjects()
87
    {
88
        $headers = $this->getMock('Zend\Mail\Headers', ['addHeader']);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0; use createMock() or getMockBuilder() instead

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
89
        $headers->expects($this->at(0))->method('addHeader')->with((new Subject())->setSubject('Default subject'));
90
        $template = new HeaderObjectProviderTemplate();
91
        $message = new Message();
92
        $message->setHeaders($headers);
93
        $event = new ComposerEvent();
94
        $event->setMessage($message);
95
        $event->setTemplate($template);
96
        $this->plugin->injectDefaultHeaders($event);
97
    }
98
}
99