feat(menu): 관리자 선물함 메뉴를 추가한다
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package kr.co.vividnext.sodalive.menu
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.MemberRole
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
@@ -8,6 +9,20 @@ class MenuService(
|
||||
private val repository: MenuRepository
|
||||
) {
|
||||
fun getMenus(member: Member): List<GetMenuResponse> {
|
||||
return repository.getMenu(member.role)
|
||||
val menus = repository.getMenu(member.role)
|
||||
if (member.role != MemberRole.ADMIN) return menus
|
||||
|
||||
return menus + giftManagementMenu
|
||||
}
|
||||
|
||||
private companion object {
|
||||
val giftManagementMenu = GetMenuResponse(
|
||||
title = "선물함 관리",
|
||||
items = listOf(
|
||||
GetMenuResponse(title = "선물함 리스트", route = "/gift/list"),
|
||||
GetMenuResponse(title = "선물 카테고리", route = "/gift/category"),
|
||||
GetMenuResponse(title = "선물 사이즈", route = "/gift/size")
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package kr.co.vividnext.sodalive.menu
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.MemberRole
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.mockito.Mockito
|
||||
|
||||
class MenuServiceTest {
|
||||
private val repository = Mockito.mock(MenuRepository::class.java)
|
||||
private val service = MenuService(repository)
|
||||
|
||||
@Test
|
||||
@DisplayName("관리자 메뉴 마지막에 선물함 관리 메뉴를 추가한다")
|
||||
fun shouldAppendGiftMenuForAdmin() {
|
||||
Mockito.`when`(repository.getMenu(MemberRole.ADMIN)).thenReturn(
|
||||
listOf(GetMenuResponse(title = "회원 관리", route = "/member/list"))
|
||||
)
|
||||
|
||||
val menus = service.getMenus(member(MemberRole.ADMIN))
|
||||
|
||||
assertEquals("회원 관리", menus[0].title)
|
||||
val giftMenu = menus.last()
|
||||
assertEquals("선물함 관리", giftMenu.title)
|
||||
assertNull(giftMenu.route)
|
||||
assertEquals(
|
||||
listOf("선물함 리스트", "선물 카테고리", "선물 사이즈"),
|
||||
giftMenu.items?.map { it.title }
|
||||
)
|
||||
assertEquals(
|
||||
listOf("/gift/list", "/gift/category", "/gift/size"),
|
||||
giftMenu.items?.map { it.route }
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("관리자가 아니면 선물함 관리 메뉴를 추가하지 않는다")
|
||||
fun shouldNotAppendGiftMenuForNonAdmin() {
|
||||
Mockito.`when`(repository.getMenu(MemberRole.CONTENT_MANAGER)).thenReturn(
|
||||
listOf(GetMenuResponse(title = "콘텐츠 리스트", route = "/content/list"))
|
||||
)
|
||||
|
||||
val menus = service.getMenus(member(MemberRole.CONTENT_MANAGER))
|
||||
|
||||
assertEquals(1, menus.size)
|
||||
assertEquals("콘텐츠 리스트", menus[0].title)
|
||||
}
|
||||
|
||||
private fun member(role: MemberRole) = Member(
|
||||
email = "${role.name.lowercase()}@test.com",
|
||||
password = "password",
|
||||
nickname = role.name.lowercase(),
|
||||
role = role
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user