ContactFormTest.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace tests\models;
  3. use app\models\ContactForm;
  4. class ContactFormTest extends \Codeception\Test\Unit
  5. {
  6. private $model;
  7. protected function _before()
  8. {
  9. \Yii::$app->mailer->fileTransportCallback = function () {
  10. return 'testing_message.eml';
  11. };
  12. }
  13. protected function _after()
  14. {
  15. unlink($this->getMessageFile());
  16. }
  17. public function testEmailIsSentOnContact()
  18. {
  19. /** @var ContactForm $model */
  20. $this->model = $this->getMockBuilder('app\models\ContactForm')
  21. ->setMethods(['validate'])
  22. ->getMock();
  23. $this->model->expects($this->once())
  24. ->method('validate')
  25. ->will($this->returnValue(true));
  26. $this->model->attributes = [
  27. 'name' => 'Tester',
  28. 'email' => 'tester@example.com',
  29. 'subject' => 'very important letter subject',
  30. 'body' => 'body of current message',
  31. ];
  32. expect_that($this->model->contact('admin@example.com'));
  33. expect_that(file_exists($this->getMessageFile()));
  34. $emailMessage = file_get_contents($this->getMessageFile());
  35. expect($emailMessage)->contains($this->model->name);
  36. expect($emailMessage)->contains($this->model->email);
  37. expect($emailMessage)->contains($this->model->subject);
  38. expect($emailMessage)->contains($this->model->body);
  39. }
  40. private function getMessageFile()
  41. {
  42. return \Yii::getAlias(\Yii::$app->mailer->fileTransportPath) . '/testing_message.eml';
  43. }
  44. }