You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							151 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							151 lines
						
					
					
						
							3.4 KiB
						
					
					
				| <?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->getComponent('mail'); | |
| 	} | |
|  | |
| 	// Tests : | |
|  | |
| 	public function testRender() | |
| 	{ | |
| 		$mailer = $this->getMailer(); | |
| 		$message = $mailer->compose(); | |
|  | |
| 		$viewName = 'test/text/view'; | |
| 		$message->renderText($viewName); | |
| 		$expectedText = 'view=' . $viewName . ' layout=' . $mailer->textLayout; | |
| 		$this->assertEquals($expectedText, $message->text, 'Unable to render text!'); | |
|  | |
| 		$viewName = 'test/html/view'; | |
| 		$message->renderHtml($viewName); | |
| 		$expectedHtml = 'view=' . $viewName . ' layout=' . $mailer->htmlLayout; | |
| 		$this->assertEquals($expectedHtml, $message->html, 'Unable to render html!'); | |
| 	} | |
|  | |
| 	/** | |
| 	 * @depends testRender | |
| 	 */ | |
| 	public function testComposeBody() | |
| 	{ | |
| 		$mailer = $this->getMailer(); | |
| 		$message = $mailer->compose(); | |
|  | |
| 		$viewName = 'test/html/view'; | |
| 		$message->body($viewName); | |
| 		$expectedHtml = 'view=' . $viewName . ' layout=' . $mailer->htmlLayout; | |
| 		$this->assertEquals($expectedHtml, $message->html, 'Unable to compose html!'); | |
| 		$expectedText = strip_tags($expectedHtml); | |
| 		$this->assertEquals($expectedText, $message->text, 'Unable to compose text from html!'); | |
|  | |
| 		$textViewName = 'test/text/view'; | |
| 		$htmlViewName = 'test/html/view'; | |
| 		$message->body(['text' => $textViewName, 'html' => $htmlViewName]); | |
| 		$expectedHtml = 'view=' . $htmlViewName . ' layout=' . $mailer->htmlLayout; | |
| 		$this->assertEquals($expectedHtml, $message->html, 'Unable to compose html from separated view!'); | |
| 		$expectedText = 'view=' . $textViewName . ' layout=' . $mailer->textLayout; | |
| 		$this->assertEquals($expectedText, $message->text, 'Unable to compose text from separated view!'); | |
| 	} | |
|  | |
| 	public function testSend() | |
| 	{ | |
| 		$mailer = $this->getMailer(); | |
| 		$message = $mailer->compose(); | |
| 		$message->send(); | |
| 		$this->assertEquals($message, $mailer->sentMessages[0], 'Unable to send message!'); | |
| 	} | |
| } | |
|  | |
| /** | |
|  * Test Mailer class | |
|  */ | |
| class TestMailer extends BaseMailer | |
| { | |
| 	public $messageClass = 'yiiunit\framework\mail\TestMessage'; | |
| 	public $sentMessages = array(); | |
|  | |
| 	public function render($view, $params = [], $layout = false) | |
| 	{ | |
| 		return 'view=' . $view . ' layout=' . $layout; | |
| 	} | |
|  | |
| 	public function send($message) | |
| 	{ | |
| 		$this->sentMessages[] = $message; | |
| 	} | |
| } | |
|  | |
| /** | |
|  * Test Message class | |
|  */ | |
| class TestMessage extends BaseMessage | |
| { | |
| 	public $text; | |
| 	public $html; | |
|  | |
| 	public function charset($charset) {} | |
|  | |
| 	public function from($from) {} | |
|  | |
| 	public function to($to) {} | |
|  | |
| 	public function cc($cc) {} | |
|  | |
| 	public function bcc($bcc) {} | |
|  | |
| 	public function subject($subject) {} | |
|  | |
| 	public function text($text) { | |
| 		$this->text = $text; | |
| 	} | |
|  | |
| 	public function html($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); | |
| 	} | |
| } |