Completed
Push — master ( 104097...726a40 )
by Tijs
07:02
created

MessageFactoryTest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 131
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 3
Bugs 1 Features 1
Metric Value
wmc 8
c 3
b 1
f 1
lcom 1
cbo 4
dl 0
loc 131
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 9 1
A tearDown() 0 4 1
A getTemplatingMock() 0 9 1
A testTheDefaultsShouldBeEmptyWhenNotSet() 0 10 1
A testTheDefaultsShouldBeCorrectWhenSet() 0 14 1
A testCreationOfPlainTextMessage() 0 15 1
B testCreationOfHtmlMessageWithAutomaticPlainText() 0 32 1
A testTagsShouldBeStripped() 0 17 1
1
<?php
2
3
namespace SumoCoders\FrameworkCoreBundle\Tests\Mail;
4
5
use SumoCoders\FrameworkCoreBundle\Mail\MessageFactory;
6
7
class MessageFactoryTest extends \PHPUnit_Framework_TestCase
8
{
9
    /**
10
     * @var MessageFactory
11
     */
12
    protected $messageFactory;
13
14
    protected function setUp()
15
    {
16
        $temp = tempnam(sys_get_temp_dir(), 'message_factory_test');
17
        $this->messageFactory = new MessageFactory(
18
            $this->getTemplatingMock(),
19
            'mails/default_email.html.twig',
20
            $temp
21
        );
22
    }
23
24
    /**
25
     * @inherit
26
     */
27
    protected function tearDown()
28
    {
29
        $this->messageFactory = null;
30
    }
31
32
    /**
33
     * @return \PHPUnit_Framework_MockObject_MockObject
34
     */
35
    protected function getTemplatingMock()
36
    {
37
        $templating = $this->getMock('\Symfony\Bundle\FrameworkBundle\Templating\EngineInterface');
38
        $templating
39
            ->method('render')
40
            ->willReturn('<html><head></head><body><p>And I, le content</p></body></html>');
41
42
        return $templating;
43
    }
44
45
    public function testTheDefaultsShouldBeEmptyWhenNotSet()
46
    {
47
        $message = $this->messageFactory->createDefaultMessage();
48
49
        $this->assertInstanceOf('\Swift_Message', $message);
50
51
        $this->assertEmpty($message->getFrom());
52
        $this->assertNull($message->getReplyTo());
53
        $this->assertEmpty($message->getTo());
54
    }
55
56
    public function testTheDefaultsShouldBeCorrectWhenSet()
57
    {
58
        $this->messageFactory->setDefaultSender('[email protected]', 'John From');
59
        $this->messageFactory->setDefaultReplyTo('[email protected]', 'John Reply To');
60
        $this->messageFactory->setDefaultTo('[email protected]', 'John To');
61
62
        $message = $this->messageFactory->createDefaultMessage();
63
64
        $this->assertInstanceOf('\Swift_Message', $message);
65
66
        $this->assertEquals(array('[email protected]' => 'John From'), $message->getFrom());
67
        $this->assertEquals(array('[email protected]' => 'John Reply To'), $message->getReplyTo());
68
        $this->assertEquals(array('[email protected]' => 'John To'), $message->getTo());
69
    }
70
71
    public function testCreationOfPlainTextMessage()
72
    {
73
        $subject = 'I am le subject';
74
        $content = 'And I, le content';
75
76
        $message = $this->messageFactory->createPlainTextMessage(
77
            $subject,
78
            $content
79
        );
80
81
        $this->assertInstanceOf('\Swift_Message', $message);
82
        $this->assertEquals($subject, $message->getSubject());
83
        $this->assertEquals($content, $message->getBody());
84
        $this->assertEmpty($message->getChildren());
85
    }
86
87
    public function testCreationOfHtmlMessageWithAutomaticPlainText()
88
    {
89
        $subject = 'I am le subject';
90
        $content = '<p>And I, le content</p>';
91
        $expectedResult = <<<EOF
92
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
93
<html>
94
  <head></head>
95
  <body>
96
    <p>And I, le content</p>
97
  </body>
98
</html>
99
100
EOF;
101
102
        $message = $this->messageFactory->createHtmlMessage(
103
            $subject,
104
            $content
105
        );
106
107
        $this->assertInstanceOf('\Swift_Message', $message);
108
        $this->assertEquals($subject, $message->getSubject());
109
        $this->assertEquals($expectedResult, $message->getBody());
110
111
        $children = $message->getChildren();
112
        $this->assertCount(1, $children);
113
        $this->assertEquals('text/plain', $children[0]->getContentType());
114
        $this->assertEquals(
115
            $this->messageFactory->convertToPlainText($content),
116
            $children[0]->getBody()
117
        );
118
    }
119
120
    public function testTagsShouldBeStripped()
121
    {
122
        $this->assertEquals(
123
            'a paragraph',
124
            $this->messageFactory->convertToPlainText(
125
                '<p>a paragraph</p>'
126
            )
127
        );
128
        $this->assertEquals(
129
            'a paragraph',
130
            $this->messageFactory->convertToPlainText(
131
                '<p>
132
                  a paragraph
133
                 </p>'
134
            )
135
        );
136
    }
137
}
138