Blame view

tests/codeception/frontend/unit/models/ContactFormTest.php 1.77 KB
4253cbec   root   first commit
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
  <?php

  

  namespace tests\codeception\frontend\unit\models;

  

  use Yii;

  use tests\codeception\frontend\unit\TestCase;

  use frontend\models\ContactForm;

  

  class ContactFormTest extends TestCase

  {

  

      use \Codeception\Specify;

  

      protected function setUp()

      {

          parent::setUp();

          Yii::$app->mailer->fileTransportCallback = function ($mailer, $message) {

              return 'testing_message.eml';

          };

      }

  

      protected function tearDown()

      {

          unlink($this->getMessageFile());

          parent::tearDown();

      }

  

      public function testContact()

      {

          $model = new ContactForm();

  

          $model->attributes = [

              'name' => 'Tester',

              'email' => 'tester@example.com',

              'subject' => 'very important letter subject',

              'body' => 'body of current message',

          ];

  

          $model->sendEmail('admin@example.com');

  

          $this->specify('email should be send', function () {

              expect('email file should exist', file_exists($this->getMessageFile()))->true();

          });

  

          $this->specify('message should contain correct data', function () use ($model) {

              $emailMessage = file_get_contents($this->getMessageFile());

  

              expect('email should contain user name', $emailMessage)->contains($model->name);

              expect('email should contain sender email', $emailMessage)->contains($model->email);

              expect('email should contain subject', $emailMessage)->contains($model->subject);

              expect('email should contain body', $emailMessage)->contains($model->body);

          });

      }

  

      private function getMessageFile()

      {

          return Yii::getAlias(Yii::$app->mailer->fileTransportPath) . '/testing_message.eml';

      }

  }