test(backend): add failing tests for step 5 — PromptBuilderService
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user