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