feat(menu): 관리자 선물함 메뉴를 추가한다
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package kr.co.vividnext.sodalive.menu
|
package kr.co.vividnext.sodalive.menu
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -8,6 +9,20 @@ class MenuService(
|
|||||||
private val repository: MenuRepository
|
private val repository: MenuRepository
|
||||||
) {
|
) {
|
||||||
fun getMenus(member: Member): List<GetMenuResponse> {
|
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