Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f143f34

Browse files
committed
feature #50200 [Mailer] Adds assertEmailSubjectContains and assertEmailSubjectNotContains methods (johanadivare)
This PR was merged into the 6.4 branch. Discussion ---------- [Mailer] Adds `assertEmailSubjectContains` and `assertEmailSubjectNotContains` methods > Adds assertEmailSubjectContains and assertEmailSubjectNotContains | Q | A | ------------- | --- | Branch? | 5.4 | Bug fix? | No | New feature? | yes | Deprecations? | No | Tickets | Fix #49939 | License | MIT | Doc PR | symfony/symfony-docs#18269 <!-- Replace this notice by a short README for your feature/bugfix. This will help reviewers and should be a good start for the documentation. Additionally (see https://symfony.com/releases): - Always add tests and ensure they pass. - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too). - Features and deprecations must be submitted against the latest branch. - For new features, provide some code snippets to help understand usage. - Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry - Never break backward compatibility (see https://symfony.com/bc). --> Commits ------- 55ba7b8 [Mailer] Add EmailSubjectContains constraint (#49939)
2 parents 20803f7 + 55ba7b8 commit f143f34

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

src/Symfony/Bundle/FrameworkBundle/Test/MailerAssertionsTrait.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ public static function assertEmailAddressContains(RawMessage $email, string $hea
9090
self::assertThat($email, new MimeConstraint\EmailAddressContains($headerName, $expectedValue), $message);
9191
}
9292

93+
public static function assertEmailSubjectContains(RawMessage $email, string $expectedValue, string $message = ''): void
94+
{
95+
self::assertThat($email, new MimeConstraint\EmailSubjectContains($expectedValue), $message);
96+
}
97+
98+
public static function assertEmailSubjectNotContains(RawMessage $email, string $expectedValue, string $message = ''): void
99+
{
100+
self::assertThat($email, new LogicalNot(new MimeConstraint\EmailSubjectContains($expectedValue)), $message);
101+
}
102+
93103
/**
94104
* @return MessageEvent[]
95105
*/

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/MailerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ public function testMailerAssertions()
104104
$this->assertEmailAttachmentCount($email, 1);
105105

106106
$email = $this->getMailerMessage($second);
107+
$this->assertEmailSubjectContains($email, 'Foo');
108+
$this->assertEmailSubjectNotContains($email, 'Bar');
107109
$this->assertEmailAddressContains($email, 'To', '[email protected]');
108110
$this->assertEmailAddressContains($email, 'To', '[email protected]');
109111
$this->assertEmailAddressContains($email, 'Reply-To', '[email protected]');
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Mime\Test\Constraint;
13+
14+
use PHPUnit\Framework\Constraint\Constraint;
15+
use Symfony\Component\Mime\Email;
16+
17+
final class EmailSubjectContains extends Constraint
18+
{
19+
public function __construct(
20+
private readonly string $expectedSubjectValue,
21+
) {
22+
}
23+
24+
public function toString(): string
25+
{
26+
return sprintf('contains subject with value "%s"', $this->expectedSubjectValue);
27+
}
28+
29+
protected function matches($other): bool
30+
{
31+
if (!$other instanceof Email) {
32+
throw new \LogicException('Can only test a message subject on a Email instance.');
33+
}
34+
35+
return str_contains((string) $other->getSubject(), $this->expectedSubjectValue);
36+
}
37+
38+
protected function failureDescription($other): string
39+
{
40+
$message = 'The email subject '.$this->toString();
41+
if ($other instanceof Email) {
42+
$message .= sprintf('. The subject was: "%s"', $other->getSubject() ?? '<empty>');
43+
}
44+
45+
return $message;
46+
}
47+
}

0 commit comments

Comments
 (0)