From 8c742ce3a4433d02ec8618f280701e3cea523585 Mon Sep 17 00:00:00 2001 From: Gabriel Sancho Date: Thu, 26 Mar 2026 18:50:04 -0300 Subject: [PATCH] =?UTF-8?q?test(backend):=20add=20failing=20tests=20for=20?= =?UTF-8?q?step=207=20=E2=80=94=20EmailSenderService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/EmailSenderServiceTest.kt | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 backend/src/test/kotlin/com/condado/newsletter/service/EmailSenderServiceTest.kt diff --git a/backend/src/test/kotlin/com/condado/newsletter/service/EmailSenderServiceTest.kt b/backend/src/test/kotlin/com/condado/newsletter/service/EmailSenderServiceTest.kt new file mode 100644 index 0000000..d64c548 --- /dev/null +++ b/backend/src/test/kotlin/com/condado/newsletter/service/EmailSenderServiceTest.kt @@ -0,0 +1,79 @@ +package com.condado.newsletter.service + +import io.mockk.every +import io.mockk.mockk +import io.mockk.slot +import io.mockk.verify +import jakarta.mail.internet.MimeMessage +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import org.springframework.mail.javamail.JavaMailSender + +class EmailSenderServiceTest { + + private val mailSender: JavaMailSender = mockk() + private val mimeMessage: MimeMessage = mockk(relaxed = true) + private val service = EmailSenderService(mailSender) + + @Test + fun should_callJavaMailSenderWithCorrectFromAddress_when_sendCalled() { + every { mailSender.createMimeMessage() } returns mimeMessage + every { mailSender.send(mimeMessage) } returns Unit + + service.send( + from = "joao@condado.com", + to = listOf("friend@example.com"), + subject = "RE: Meeting on Tuesday", + body = "Dear colleagues, I have prepared the agenda." + ) + + verify(exactly = 1) { mailSender.send(mimeMessage) } + } + + @Test + fun should_sendToAllRecipients_when_multipleRecipientsConfigured() { + every { mailSender.createMimeMessage() } returns mimeMessage + every { mailSender.send(mimeMessage) } returns Unit + + service.send( + from = "joao@condado.com", + to = listOf("friend1@example.com", "friend2@example.com", "friend3@example.com"), + subject = "Subject", + body = "Body" + ) + + verify(exactly = 1) { mailSender.send(mimeMessage) } + } + + @Test + fun should_sendMultipartMessage_when_sendCalled() { + every { mailSender.createMimeMessage() } returns mimeMessage + every { mailSender.send(mimeMessage) } returns Unit + + // The send method should complete without throwing — multipart assembly is verified indirectly + service.send( + from = "joao@condado.com", + to = listOf("friend@example.com"), + subject = "Formal Memo", + body = "

I wish to formally announce that I am out of coffee.

" + ) + + verify(exactly = 1) { mailSender.send(mimeMessage) } + } + + @Test + fun should_logSendAttempt_when_sendCalled() { + every { mailSender.createMimeMessage() } returns mimeMessage + every { mailSender.send(mimeMessage) } returns Unit + + // No exception should be thrown — logging is captured via SLF4J internally + service.send( + from = "joao@condado.com", + to = listOf("friend@example.com"), + subject = "Log test", + body = "Testing log output" + ) + + verify(exactly = 1) { mailSender.send(mimeMessage) } + } +}