test(backend): add failing tests for step 7 — EmailSenderService
This commit is contained in:
@@ -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 = "<p>I wish to formally announce that I am out of coffee.</p>"
|
||||
)
|
||||
|
||||
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) }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user