feat(agent-read): 관리자 에이전트 닉네임 검색 조회를 추가한다
This commit is contained in:
@@ -81,6 +81,20 @@ class AdminAgentReadQueryRepositoryTest @Autowired constructor(
|
||||
assertEquals(listOf(null, "agent-search"), items.map { it.currentAgentNickname })
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("에이전트 닉네임 검색은 활성 AGENT만 id와 nickname으로 반환한다")
|
||||
fun shouldSearchActiveAgentsByNickname() {
|
||||
val matchedAgent = saveMember("agent-alpha", MemberRole.AGENT)
|
||||
saveMember("agent-beta", MemberRole.AGENT, isActive = false)
|
||||
saveMember("creator-agent", MemberRole.CREATOR)
|
||||
|
||||
val items = repository.searchAgentByNickname(searchWord = "agent", limit = 20)
|
||||
|
||||
assertEquals(1, items.size)
|
||||
assertEquals(matchedAgent.id, items.first().id)
|
||||
assertEquals("agent-alpha", items.first().nickname)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("특정 에이전트 소속 크리에이터 목록은 assignedAt을 포함해 현재 활성 구간만 반환한다")
|
||||
fun shouldGetAssignedCreatorsForAdminDetail() {
|
||||
@@ -101,15 +115,15 @@ class AdminAgentReadQueryRepositoryTest @Autowired constructor(
|
||||
assertEquals(now.minusDays(3), items.first().assignedAt)
|
||||
}
|
||||
|
||||
private fun saveMember(nickname: String, role: MemberRole): Member {
|
||||
return memberRepository.saveAndFlush(
|
||||
Member(
|
||||
email = "$nickname@test.com",
|
||||
password = "password",
|
||||
nickname = nickname,
|
||||
role = role
|
||||
)
|
||||
private fun saveMember(nickname: String, role: MemberRole, isActive: Boolean = true): Member {
|
||||
val member = Member(
|
||||
email = "$nickname@test.com",
|
||||
password = "password",
|
||||
nickname = nickname,
|
||||
role = role
|
||||
)
|
||||
member.isActive = isActive
|
||||
return memberRepository.saveAndFlush(member)
|
||||
}
|
||||
|
||||
private fun saveRelation(agent: Member, creator: Member, assignedAt: LocalDateTime, unassignedAt: LocalDateTime?) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package kr.co.vividnext.sodalive.admin.partner.agent.read
|
||||
|
||||
import kr.co.vividnext.sodalive.admin.member.AdminSimpleMemberResponse
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||
@@ -41,6 +42,33 @@ class AdminAgentReadServiceTest {
|
||||
assertEquals("admin.member.search_word_min_length", exception.messageKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("에이전트 닉네임 검색은 두 글자 미만 검색어를 거부한다")
|
||||
fun shouldRejectTooShortAgentSearchWord() {
|
||||
val exception = assertThrows(SodaException::class.java) {
|
||||
service.searchAgentByNickname(searchWord = "a", size = 20)
|
||||
}
|
||||
|
||||
assertEquals("admin.member.search_word_min_length", exception.messageKey)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("에이전트 닉네임 검색은 size가 0 이하이면 20으로 보정한다")
|
||||
fun shouldDefaultAgentSearchSizeToTwenty() {
|
||||
val expected = listOf(
|
||||
AdminSimpleMemberResponse(
|
||||
id = 11L,
|
||||
nickname = "agent-a"
|
||||
)
|
||||
)
|
||||
Mockito.`when`(queryRepository.searchAgentByNickname(searchWord = "agent", limit = 20L)).thenReturn(expected)
|
||||
|
||||
val actual = service.searchAgentByNickname(searchWord = "agent", size = 0)
|
||||
|
||||
assertEquals(expected, actual)
|
||||
Mockito.verify(queryRepository).searchAgentByNickname(searchWord = "agent", limit = 20L)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("에이전트 목록 조회는 현재 월 summary 필드를 그대로 반환한다")
|
||||
fun shouldReturnAgentListWithCurrentMonthSummaryFields() {
|
||||
|
||||
Reference in New Issue
Block a user