shopit-back/tests/Feature/MailTest/MailTestControllerTest.php

60 lines
1.8 KiB
PHP

<?php
namespace Tests\Feature\MailTest;
use App\Domains\MailTest\Mailables\TestMail;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
class MailTestControllerTest extends TestCase
{
public function test_it_sends_a_test_email(): void
{
Mail::fake();
$response = $this->postJson('/api/mail-test/send', [
'to' => 'recipient@example.com',
'subject' => 'SMTP test',
'message' => 'Test message',
]);
$response->assertOk()
->assertJsonPath('message', 'Correo de prueba enviado correctamente.')
->assertJsonPath('recipient', 'recipient@example.com')
->assertJsonPath('mailer', 'array')
->assertJsonStructure(['sent_at']);
Mail::assertSent(TestMail::class, function (TestMail $mail): bool {
return $mail->hasTo('recipient@example.com')
&& $mail->mailSubject === 'SMTP test'
&& $mail->mailMessage === 'Test message';
});
}
public function test_it_uses_default_content_when_optional_fields_are_omitted(): void
{
Mail::fake();
$this->postJson('/api/mail-test/send', [
'to' => 'recipient@example.com',
])->assertOk();
Mail::assertSent(TestMail::class, function (TestMail $mail): bool {
return $mail->mailSubject === 'Prueba de correo de Shopit'
&& $mail->mailMessage === 'Este es un correo de prueba enviado desde Shopit.';
});
}
public function test_it_validates_the_recipient(): void
{
Mail::fake();
$this->postJson('/api/mail-test/send', [
'to' => 'invalid-email',
])->assertUnprocessable()
->assertJsonValidationErrors(['to']);
Mail::assertNothingSent();
}
}