74 lines
2.8 KiB
Kotlin
74 lines
2.8 KiB
Kotlin
package com.condado.newsletter.controller
|
|
|
|
import com.condado.newsletter.model.VirtualEntity
|
|
import com.condado.newsletter.repository.EntityTaskRepository
|
|
import com.condado.newsletter.repository.GeneratedMessageHistoryRepository
|
|
import com.condado.newsletter.repository.VirtualEntityRepository
|
|
import com.condado.newsletter.scheduler.EntityScheduler
|
|
import com.condado.newsletter.service.JwtService
|
|
import com.ninjasquad.springmockk.MockkBean
|
|
import jakarta.servlet.http.Cookie
|
|
import org.junit.jupiter.api.AfterEach
|
|
import org.junit.jupiter.api.Test
|
|
import org.springframework.beans.factory.annotation.Autowired
|
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
|
|
import org.springframework.boot.test.context.SpringBootTest
|
|
import org.springframework.http.MediaType
|
|
import org.springframework.test.web.servlet.MockMvc
|
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post
|
|
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath
|
|
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
|
|
|
|
@SpringBootTest
|
|
@AutoConfigureMockMvc
|
|
class EntityTaskControllerTest {
|
|
|
|
@Autowired lateinit var mockMvc: MockMvc
|
|
@Autowired lateinit var jwtService: JwtService
|
|
@Autowired lateinit var virtualEntityRepository: VirtualEntityRepository
|
|
@Autowired lateinit var entityTaskRepository: EntityTaskRepository
|
|
@Autowired lateinit var generatedMessageHistoryRepository: GeneratedMessageHistoryRepository
|
|
|
|
@MockkBean lateinit var entityScheduler: EntityScheduler
|
|
|
|
private fun authCookie() = Cookie("jwt", jwtService.generateToken())
|
|
|
|
@AfterEach
|
|
fun cleanUp() {
|
|
generatedMessageHistoryRepository.deleteAll()
|
|
entityTaskRepository.deleteAll()
|
|
virtualEntityRepository.deleteAll()
|
|
}
|
|
|
|
@Test
|
|
fun should_createTask_when_promptIsBlankInCreateRequest() {
|
|
val entity = virtualEntityRepository.save(
|
|
VirtualEntity(
|
|
name = "Entity A",
|
|
email = "entity-a@condado.com",
|
|
jobTitle = "Ops"
|
|
)
|
|
)
|
|
|
|
val payload = """
|
|
{
|
|
"entityId": "${entity.id}",
|
|
"name": "Morning Blast",
|
|
"prompt": "",
|
|
"scheduleCron": "0 8 * * 1-5",
|
|
"emailLookback": "last_week"
|
|
}
|
|
""".trimIndent()
|
|
|
|
mockMvc.perform(
|
|
post("/api/v1/tasks")
|
|
.cookie(authCookie())
|
|
.contentType(MediaType.APPLICATION_JSON)
|
|
.content(payload)
|
|
)
|
|
.andExpect(status().isCreated)
|
|
.andExpect(jsonPath("$.entityId").value(entity.id.toString()))
|
|
.andExpect(jsonPath("$.name").value("Morning Blast"))
|
|
.andExpect(jsonPath("$.prompt").value(""))
|
|
}
|
|
} |