Skip to content

Commit 7cd6562

Browse files
authored
Added grabEmail* functions (#107)
1 parent c97a29f commit 7cd6562

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/Codeception/Module/Symfony/MailerAssertionsTrait.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Symfony\Component\Mailer\Event\MessageEvents;
88
use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
99
use Symfony\Component\Mailer\Test\Constraint as MailerConstraint;
10+
use Symfony\Component\Mime\Email;
1011

1112
trait MailerAssertionsTrait
1213
{
@@ -36,6 +37,45 @@ public function seeEmailIsSent(int $expectedCount = 1): void
3637
$this->assertThat($this->getMessageMailerEvents(), new MailerConstraint\EmailCount($expectedCount));
3738
}
3839

40+
/**
41+
* Returns the last sent email.
42+
*
43+
* ```php
44+
* <?php
45+
* $email = $I->grabLastSentEmail();
46+
* $address = $email->getTo()[0];
47+
* $I->assertSame('john_doe@user.com', $address->getAddress());
48+
* ```
49+
*
50+
* @return \Symfony\Component\Mime\Email|null
51+
*/
52+
public function grabLastSentEmail(): ?Email
53+
{
54+
$emails = $this->getMessageMailerEvents()->getMessages();
55+
/** @var Email|false $lastEmail */
56+
if ($lastEmail = end($emails)) {
57+
return $lastEmail;
58+
}
59+
return null;
60+
}
61+
62+
/**
63+
* Returns an array of all sent emails.
64+
*
65+
* ```php
66+
* <?php
67+
* $emails = $I->grabSentEmails();
68+
* $address = $emails[0]->getTo()[0];
69+
* $I->assertSame('john_doe@user.com', $address->getAddress());
70+
* ```
71+
*
72+
* @return \Symfony\Component\Mime\Email[]
73+
*/
74+
public function grabSentEmails(): array
75+
{
76+
return $this->getMessageMailerEvents()->getMessages();
77+
}
78+
3979
protected function getMessageMailerEvents(): MessageEvents
4080
{
4181
if ($messageLogger = $this->getService('mailer.message_logger_listener')) {

0 commit comments

Comments
 (0)