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

testPluginCanInjectHeaderObjects()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 11
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\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