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.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.6 KiB
						
					
					
				| <?php | |
|  | |
| namespace tests\unit\models; | |
|  | |
| use Yii; | |
| use yii\codeception\TestCase; | |
|  | |
| class ContactFormTest extends TestCase | |
| { | |
|  | |
| 	use \Codeception\Specify; | |
|  | |
| 	protected function setUp() | |
| 	{ | |
| 		parent::setUp(); | |
| 		Yii::$app->mail->fileTransportCallback = function ($mailer, $message) { | |
| 			return 'testing_message.eml'; | |
| 		}; | |
| 	} | |
|  | |
| 	protected function tearDown() | |
| 	{ | |
| 		unlink($this->getMessageFile()); | |
| 		parent::tearDown(); | |
| 	} | |
|  | |
| 	public function testContact() | |
| 	{ | |
| 		$model = $this->getMock('app\models\ContactForm', ['validate']); | |
| 		$model->expects($this->once())->method('validate')->will($this->returnValue(true)); | |
|  | |
| 		$model->attributes = [ | |
| 			'name' => 'Tester', | |
| 			'email' => 'tester@example.com', | |
| 			'subject' => 'very important letter subject', | |
| 			'body' => 'body of current message', | |
| 		]; | |
|  | |
| 		$model->contact('admin@example.com'); | |
|  | |
| 		$this->specify('email should be send', function () { | |
| 			$this->assertFileExists($this->getMessageFile(), 'email file should exist'); | |
| 		}); | |
|  | |
| 		$this->specify('message should contain correct data', function () use($model) { | |
| 			$emailMessage = file_get_contents($this->getMessageFile()); | |
| 			$this->assertContains($model->name, $emailMessage, 'email should contain user name'); | |
| 			$this->assertContains($model->email, $emailMessage, 'email should contain sender email'); | |
| 			$this->assertContains($model->subject, $emailMessage, 'email should contain subject'); | |
| 			$this->assertContains($model->body, $emailMessage, 'email should contain body'); | |
| 		}); | |
| 	} | |
|  | |
| 	private function getMessageFile() | |
| 	{ | |
| 		return Yii::getAlias(Yii::$app->mail->fileTransportPath) . '/testing_message.eml'; | |
| 	} | |
|  | |
| }
 | |
| 
 |