Skip to content

Commit

Permalink
Separate chain calls (#32)
Browse files Browse the repository at this point in the history
  • Loading branch information
sankaest committed May 31, 2022
1 parent 18a9d4a commit a828484
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 17 deletions.
3 changes: 2 additions & 1 deletion src/EmailTarget.php
Expand Up @@ -72,7 +72,8 @@ public function __construct(MailerInterface $mailer, $emailTo, string $subjectEm
*/
protected function export(): void
{
$message = $this->mailer->compose()
$message = $this->mailer
->compose()
->withTo($this->emailTo)
->withSubject($this->subjectEmail)
->withTextBody(wordwrap($this->formatMessages("\n"), 70))
Expand Down
65 changes: 49 additions & 16 deletions tests/EmailTargetTest.php
Expand Up @@ -36,21 +36,31 @@ final class EmailTargetTest extends TestCase
*/
protected function setUp(): void
{
$this->message = $this->getMockBuilder(MessageInterface::class)
$this->message = $this
->getMockBuilder(MessageInterface::class)
->onlyMethods(['withTextBody', 'withSubject', 'withTo'])
->getMockForAbstractClass()
;

$this->mailer = $this->getMockBuilder(Mailer::class)
$this->mailer = $this
->getMockBuilder(Mailer::class)
->onlyMethods(['compose', 'send'])
->disableOriginalConstructor()
->getMockForAbstractClass()
;

$this->message->method('withTextBody')->willReturnSelf();
$this->message->method('withSubject')->willReturnSelf();
$this->message->method('withTo')->willReturnSelf();
$this->mailer->method('compose')->willReturn($this->message);
$this->message
->method('withTextBody')
->willReturnSelf();
$this->message
->method('withSubject')
->willReturnSelf();
$this->message
->method('withTo')
->willReturnSelf();
$this->mailer
->method('compose')
->willReturn($this->message);
}

public function testExportWithSubject(): void
Expand All @@ -70,9 +80,18 @@ public function testExportWithSubject(): void

$textBody = $this->invokeFormatMessagesMethod($target);

$this->message->expects($this->once())->method('withTextBody')->with($this->equalTo($textBody));
$this->message->expects($this->once())->method('withSubject')->with($this->equalTo('Hello world'));
$this->mailer->expects($this->once())->method('compose')->with($this->equalTo(null), $this->equalTo([]));
$this->message
->expects($this->once())
->method('withTextBody')
->with($this->equalTo($textBody));
$this->message
->expects($this->once())
->method('withSubject')
->with($this->equalTo('Hello world'));
$this->mailer
->expects($this->once())
->method('compose')
->with($this->equalTo(null), $this->equalTo([]));

$target->collect([], true);
}
Expand All @@ -94,9 +113,18 @@ public function testExportWithoutSubject(): void

$textBody = $this->invokeFormatMessagesMethod($target);

$this->message->expects($this->once())->method('withTextBody')->with($this->equalTo($textBody));
$this->message->expects($this->once())->method('withSubject')->with($this->equalTo('Application Log'));
$this->mailer->expects($this->once())->method('compose')->with($this->equalTo(null), $this->equalTo([]));
$this->message
->expects($this->once())
->method('withTextBody')
->with($this->equalTo($textBody));
$this->message
->expects($this->once())
->method('withSubject')
->with($this->equalTo('Application Log'));
$this->mailer
->expects($this->once())
->method('compose')
->with($this->equalTo(null), $this->equalTo([]));

$target->collect([], true);
}
Expand All @@ -112,9 +140,12 @@ public function testExportWithCheckWidthLine(): void
),
], false);

$this->message->expects($this->once())->method('withTextBody')->with($this->equalTo(
"[info] A\nlooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\n",
));
$this->message
->expects($this->once())
->method('withTextBody')
->with($this->equalTo(
"[info] A\nlooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\n",
));

$target->collect([], true);
}
Expand All @@ -123,7 +154,9 @@ public function testExportWithSendFailure(): void
{
$target = $this->createEmailTarget(['developer@example.com']);

$this->mailer->method('send')->willThrowException(new RuntimeException());
$this->mailer
->method('send')
->willThrowException(new RuntimeException());

$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Unable to export log through email.');
Expand Down

0 comments on commit a828484

Please sign in to comment.