test(backend): add failing tests for step 5 — PromptBuilderService

This commit is contained in:
2026-03-26 18:45:31 -03:00
parent 81b356af67
commit a4fb543b7f

View File

@@ -0,0 +1,75 @@
package com.condado.newsletter.service
import com.condado.newsletter.model.EmailContext
import com.condado.newsletter.model.VirtualEntity
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import java.time.LocalDateTime
class PromptBuilderServiceTest {
private val service = PromptBuilderService()
private val entity = VirtualEntity(
name = "Rodrigo Alves",
email = "rodrigo@condado.com",
jobTitle = "Head of Casual Affairs",
personality = "Extremely pedantic but only talks about cats",
scheduleCron = "0 9 * * 1",
contextWindowDays = 3
)
private val emailContext = listOf(
EmailContext(
from = "Maria Santos <maria@condado.com>",
subject = "Re: The weekly snack situation",
body = "I think we need more chips in the pantry.",
receivedAt = LocalDateTime.now().minusHours(2)
)
)
@Test
fun should_containEntityName_when_buildPromptCalled() {
val prompt = service.buildPrompt(entity, emailContext)
assertThat(prompt).contains("Rodrigo Alves")
}
@Test
fun should_containEntityJobTitle_when_buildPromptCalled() {
val prompt = service.buildPrompt(entity, emailContext)
assertThat(prompt).contains("Head of Casual Affairs")
}
@Test
fun should_containEntityPersonality_when_buildPromptCalled() {
val prompt = service.buildPrompt(entity, emailContext)
assertThat(prompt).contains("Extremely pedantic but only talks about cats")
}
@Test
fun should_containContextWindowDays_when_buildPromptCalled() {
val prompt = service.buildPrompt(entity, emailContext)
assertThat(prompt).contains("3")
}
@Test
fun should_containEachEmailSenderAndSubject_when_emailContextProvided() {
val prompt = service.buildPrompt(entity, emailContext)
assertThat(prompt).contains("Maria Santos <maria@condado.com>")
assertThat(prompt).contains("Re: The weekly snack situation")
}
@Test
fun should_containFormatInstruction_when_buildPromptCalled() {
val prompt = service.buildPrompt(entity, emailContext)
assertThat(prompt).contains("SUBJECT:")
assertThat(prompt).contains("BODY:")
}
@Test
fun should_returnPromptWithNoEmails_when_emailContextIsEmpty() {
val prompt = service.buildPrompt(entity, emptyList())
assertThat(prompt).contains("Rodrigo Alves")
assertThat(prompt).isNotEmpty()
}
}