assertSame($message, $message->setFrom('sender@example.com')); $this->assertSame($message, $message->setTo('recipient@example.com')); $this->assertSame($message, $message->setSubject('Subject')); $this->assertSame($message, $message->setBodyPlain('Plain text')); $this->assertSame($message, $message->setBodyHtml('

HTML

')); $this->assertSame($message, $message->setAttachment($this->createStub(MailMergeAttachment::class))); } /** * All string getters return an empty string before any value has been set. */ public function testStringFieldsDefaultToEmptyString(): void { $message = new MailMergeMessage(); $this->assertSame('', $message->getFrom()); $this->assertSame('', $message->getTo()); $this->assertSame('', $message->getSubject()); $this->assertSame('', $message->getBodyPlain()); $this->assertSame('', $message->getBodyHtml()); } /** * getAttachment returns null and hasAttachment returns false before an attachment is set. */ public function testAttachmentDefaultsToNull(): void { $message = new MailMergeMessage(); $this->assertNull($message->getAttachment()); $this->assertFalse($message->hasAttachment()); } /** * Each string field stores and returns exactly the value that was set. */ public function testStringFieldsRoundTrip(): void { $message = (new MailMergeMessage()) ->setFrom('sender@example.com') ->setTo('recipient@example.com') ->setSubject('Hello') ->setBodyPlain('Plain text body') ->setBodyHtml('

HTML body

'); $this->assertSame('sender@example.com', $message->getFrom()); $this->assertSame('recipient@example.com', $message->getTo()); $this->assertSame('Hello', $message->getSubject()); $this->assertSame('Plain text body', $message->getBodyPlain()); $this->assertSame('

HTML body

', $message->getBodyHtml()); } /** * After setting an attachment, getAttachment returns the same instance * and hasAttachment returns true. */ public function testAttachmentRoundTrip(): void { $attachment = $this->createStub(MailMergeAttachment::class); $message = (new MailMergeMessage())->setAttachment($attachment); $this->assertSame($attachment, $message->getAttachment()); $this->assertTrue($message->hasAttachment()); } }