123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- namespace tests\unit\models;
- use app\models\ContactForm;
- use yii\mail\MessageInterface;
- class ContactFormTest extends \Codeception\Test\Unit
- {
- private $model;
- /**
- * @var \UnitTester
- */
- public $tester;
- public function testEmailIsSentOnContact()
- {
- /** @var ContactForm $model */
- $this->model = $this->getMockBuilder('app\models\ContactForm')
- ->setMethods(['validate'])
- ->getMock();
- $this->model->expects($this->once())
- ->method('validate')
- ->willReturn(true);
- $this->model->attributes = [
- 'name' => 'Tester',
- 'email' => 'tester@example.com',
- 'subject' => 'very important letter subject',
- 'body' => 'body of current message',
- ];
- expect_that($this->model->contact('admin@example.com'));
- // using Yii2 module actions to check email was sent
- $this->tester->seeEmailIsSent();
- /** @var MessageInterface $emailMessage */
- $emailMessage = $this->tester->grabLastSentEmail();
- expect('valid email is sent', $emailMessage)->isInstanceOf('yii\mail\MessageInterface');
- expect($emailMessage->getTo())->hasKey('admin@example.com');
- expect($emailMessage->getFrom())->hasKey('noreply@example.com');
- expect($emailMessage->getReplyTo())->hasKey('tester@example.com');
- expect($emailMessage->getSubject())->equals('very important letter subject');
- expect($emailMessage->toString())->contains('body of current message');
- }
- }
|