1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
namespace yiiunit\framework\mail;
use Yii;
use yii\mail\BaseMailer;
use yii\mail\BaseMessage;
use yiiunit\TestCase;
/**
* @group mail
*/
class BaseMessageTest extends TestCase
{
public function setUp()
{
$this->mockApplication([
'components' => [
'mail' => $this->createTestEmailComponent()
]
]);
}
/**
* @return Mailer test email component instance.
*/
protected function createTestEmailComponent()
{
$component = new TestMailer();
return $component;
}
/**
* @return TestMailer mailer instance.
*/
protected function getMailer()
{
return Yii::$app->get('mail');
}
// Tests :
public function testSend()
{
$mailer = $this->getMailer();
$message = $mailer->compose();
$message->send($mailer);
$this->assertEquals($message, $mailer->sentMessages[0], 'Unable to send message!');
}
public function testToString()
{
$mailer = $this->getMailer();
$message = $mailer->compose();
$this->assertEquals($message->toString(), '' . $message);
}
}
/**
* Test Mailer class
*/
class TestMailer extends BaseMailer
{
public $messageClass = 'yiiunit\framework\mail\TestMessage';
public $sentMessages = [];
protected function sendMessage($message)
{
$this->sentMessages[] = $message;
}
}
/**
* Test Message class
*/
class TestMessage extends BaseMessage
{
public $text;
public $html;
public function getCharset()
{
return '';
}
public function setCharset($charset) {}
public function getFrom()
{
return '';
}
public function setFrom($from) {}
public function getReplyTo()
{
return '';
}
public function setReplyTo($replyTo) {}
public function getTo()
{
return '';
}
public function setTo($to) {}
public function getCc()
{
return '';
}
public function setCc($cc) {}
public function getBcc()
{
return '';
}
public function setBcc($bcc) {}
public function getSubject()
{
return '';
}
public function setSubject($subject) {}
public function setTextBody($text)
{
$this->text = $text;
}
public function setHtmlBody($html)
{
$this->html = $html;
}
public function attachContent($content, array $options = []) {}
public function attach($fileName, array $options = []) {}
public function embed($fileName, array $options = []) {}
public function embedContent($content, array $options = []) {}
public function toString()
{
return get_class($this);
}
}