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(); } }