MailerTest.php 2.98 KB
Newer Older
1 2
<?php

Paul Klimov committed
3
namespace yiiunit\extensions\swiftmailer;
4 5

use Yii;
Paul Klimov committed
6
use yii\swiftmailer\Mailer;
7
use yiiunit\VendorTestCase;
8

9 10
Yii::setAlias('@yii/swiftmailer', __DIR__ . '/../../../../extensions/swiftmailer');

11
/**
12
 * @group vendor
13
 * @group mail
14 15
 * @group swiftmailer
 */
16
class MailerTest extends VendorTestCase
17 18 19
{
	public function setUp()
	{
20 21 22 23 24
		$this->mockApplication([
			'components' => [
				'email' => $this->createTestEmailComponent()
			]
		]);
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
	}

	/**
	 * @return Mailer test email component instance.
	 */
	protected function createTestEmailComponent()
	{
		$component = new Mailer();
		return $component;
	}

	// Tests :

	public function testSetupTransport()
	{
		$mailer = new Mailer();

		$transport = \Swift_MailTransport::newInstance();
		$mailer->setTransport($transport);
		$this->assertEquals($transport, $mailer->getTransport(), 'Unable to setup transport!');
	}

	/**
	 * @depends testSetupTransport
	 */
	public function testConfigureTransport()
	{
		$mailer = new Mailer();

		$transportConfig = [
			'class' => 'Swift_SmtpTransport',
			'host' => 'localhost',
57 58
			'username' => 'username',
			'password' => 'password',
59 60 61 62 63 64 65 66
		];
		$mailer->setTransport($transportConfig);
		$transport = $mailer->getTransport();
		$this->assertTrue(is_object($transport), 'Unable to setup transport via config!');
		$this->assertEquals($transportConfig['class'], get_class($transport), 'Invalid transport class!');
		$this->assertEquals($transportConfig['host'], $transport->getHost(), 'Invalid transport host!');
	}

67 68 69 70 71 72 73
	/**
	 * @depends testConfigureTransport
	 */
	public function testConfigureTransportConstruct()
	{
		$mailer = new Mailer();

74
		$class = 'Swift_SmtpTransport';
75 76 77
		$host = 'some.test.host';
		$port = 999;
		$transportConfig = [
78
			'class' => $class,
79 80 81 82 83 84 85 86
			'constructArgs' => [
				$host,
				$port,
			],
		];
		$mailer->setTransport($transportConfig);
		$transport = $mailer->getTransport();
		$this->assertTrue(is_object($transport), 'Unable to setup transport via config!');
87
		$this->assertEquals($class, get_class($transport), 'Invalid transport class!');
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
		$this->assertEquals($host, $transport->getHost(), 'Invalid transport host!');
		$this->assertEquals($port, $transport->getPort(), 'Invalid transport host!');
	}

	/**
	 * @depends testConfigureTransportConstruct
	 */
	public function testConfigureTransportWithPlugins()
	{
		$mailer = new Mailer();

		$pluginClass = 'Swift_Plugins_ThrottlerPlugin';
		$rate = 10;

		$transportConfig = [
			'class' => 'Swift_SmtpTransport',
			'plugins' => [
				[
					'class' => $pluginClass,
					'constructArgs' => [
						$rate,
					],
				],
			],
		];
		$mailer->setTransport($transportConfig);
		$transport = $mailer->getTransport();
		$this->assertTrue(is_object($transport), 'Unable to setup transport via config!');
		$this->assertContains(':' . $pluginClass . ':', print_r($transport, true), 'Plugin not added');
	}

119 120 121 122 123 124
	public function testGetSwiftMailer()
	{
		$mailer = new Mailer();
		$this->assertTrue(is_object($mailer->getSwiftMailer()), 'Unable to get Swift mailer instance!');
	}
}