test(store): 아이템 고유번호들로 아이템 정보 찾기 테스트
This commit is contained in:
@@ -69,9 +69,11 @@ domain-httpRequestCode-etc
|
||||
operation::item-get[snippets='curl-request,http-request,http-response,path-parameters,response-fields']
|
||||
=== 상품 조회 (존재하지 않는 상품)
|
||||
operation::item-get-notExistItemException[snippets='curl-request,http-request,http-response,path-parameters,response-fields']
|
||||
=== 상품 리스트 조회
|
||||
operation::items-get[snippets='curl-request,http-request,http-response,path-parameters,response-fields']
|
||||
|
||||
|
||||
=== 상품 조회(판매자)
|
||||
== 상품 (판매자)
|
||||
=== 상품 조회
|
||||
operation::owner-item-get[snippets='curl-request,http-request,http-response,path-parameters,response-fields']
|
||||
=== 상품 리스트 조회
|
||||
operation::owner-itemList-get[snippets='curl-request,http-request,http-response,response-fields']
|
||||
|
||||
@@ -1,13 +1,22 @@
|
||||
package com.justpickup.storeservice.domain.item.dto;
|
||||
|
||||
import com.justpickup.storeservice.domain.item.entity.Item;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class ItemsDto {
|
||||
private Long itemId;
|
||||
private String itemName;
|
||||
|
||||
@Builder
|
||||
public ItemsDto(Long itemId, String itemName) {
|
||||
this.itemId = itemId;
|
||||
this.itemName = itemName;
|
||||
}
|
||||
|
||||
public static ItemsDto of(Item item) {
|
||||
ItemsDto itemsDto = new ItemsDto();
|
||||
itemsDto.itemId = item.getId();
|
||||
|
||||
@@ -15,7 +15,7 @@ public interface ItemService {
|
||||
|
||||
FetchItemDto fetchItem(Long itemId);
|
||||
|
||||
Page<ItemDto> findItemList(Long userId,String word, Pageable pageable);
|
||||
Page<ItemDto> findMenuItemList(Long userId, String word, Pageable pageable);
|
||||
|
||||
void putItem(Long itemId, String itemName, Long itemPrice, Long categoryId, List<ItemOptionDto> itemOptionDtos);
|
||||
|
||||
|
||||
@@ -55,9 +55,9 @@ public class ItemServiceImpl implements ItemService {
|
||||
|
||||
|
||||
@Override
|
||||
public Page<ItemDto> findItemList( Long userId,String word, Pageable pageable) {
|
||||
public Page<ItemDto> findMenuItemList(Long userId, String word, Pageable pageable) {
|
||||
|
||||
Page<Item> itemList = itemRepositoryCustom.findItem(userId,word,pageable);
|
||||
Page<Item> itemList = itemRepositoryCustom.findItem(userId, word, pageable);
|
||||
return PageableExecutionUtils.getPage(itemList.stream()
|
||||
.map(ItemDto::createWithCategory)
|
||||
.collect(Collectors.toList()),pageable,itemList::getTotalElements);
|
||||
|
||||
@@ -35,7 +35,7 @@ public class ItemOwnerApiController {
|
||||
|
||||
|
||||
Page<ItemDto> itemDtoList =
|
||||
itemService.findItemList(Long.parseLong(userId),
|
||||
itemService.findMenuItemList(Long.parseLong(userId),
|
||||
word.orElse(""),
|
||||
pageable);
|
||||
List<GetItemListResponse.Item> itemList = itemDtoList.stream()
|
||||
|
||||
@@ -2,11 +2,10 @@ package com.justpickup.storeservice.domain.item.web;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.justpickup.storeservice.config.TestConfig;
|
||||
import com.justpickup.storeservice.domain.favoritestore.repository.FavoriteStoreRepository;
|
||||
import com.justpickup.storeservice.domain.item.dto.ItemDto;
|
||||
import com.justpickup.storeservice.domain.item.dto.ItemsDto;
|
||||
import com.justpickup.storeservice.domain.item.exception.NotExistItemException;
|
||||
import com.justpickup.storeservice.domain.item.service.ItemService;
|
||||
import com.justpickup.storeservice.domain.store.repository.StoreRepository;
|
||||
import com.justpickup.storeservice.global.dto.Code;
|
||||
import com.justpickup.storeservice.global.entity.Yn;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
@@ -19,6 +18,10 @@ import org.springframework.context.annotation.Import;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
|
||||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;
|
||||
@@ -44,12 +47,6 @@ class ItemControllerTest {
|
||||
@MockBean
|
||||
ItemService itemService;
|
||||
|
||||
@MockBean
|
||||
private StoreRepository storeRepository;
|
||||
|
||||
@MockBean
|
||||
private FavoriteStoreRepository favoriteStoreRepository;
|
||||
|
||||
@Test
|
||||
@DisplayName("상품 조회")
|
||||
void getItem() throws Exception {
|
||||
@@ -122,5 +119,52 @@ class ItemControllerTest {
|
||||
;
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("[GET] 아이템 리스트 조회")
|
||||
void getItems() throws Exception {
|
||||
// GIVEN
|
||||
List<Long> itemIds = List.of(1L, 2L, 3L);
|
||||
|
||||
given(itemService.findItems(itemIds))
|
||||
.willReturn(itemsWillReturnDto(itemIds));
|
||||
|
||||
String itemIdsParam = itemIds.stream()
|
||||
.map(String::valueOf)
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
// THEN
|
||||
ResultActions actions = mockMvc.perform(get("/items/{itemIds}", itemIdsParam));
|
||||
// WHEN
|
||||
actions.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("code").value(Code.SUCCESS.name()))
|
||||
.andExpect(jsonPath("message").value(""))
|
||||
.andDo(print())
|
||||
.andDo(document("items-get",
|
||||
pathParameters(
|
||||
parameterWithName("itemIds").description("상품 고유 번호들")
|
||||
),
|
||||
responseFields(
|
||||
fieldWithPath("code").description("결과 코드 SUCCESS/ERROR"),
|
||||
fieldWithPath("message").description("메시지"),
|
||||
fieldWithPath("data[*].id").description("상품 고유 번호"),
|
||||
fieldWithPath("data[*].name").description("상품 이름")
|
||||
)
|
||||
))
|
||||
;
|
||||
}
|
||||
|
||||
private List<ItemsDto> itemsWillReturnDto(List<Long> itemIds) {
|
||||
List<ItemsDto> items = new ArrayList<>();
|
||||
|
||||
for (Long itemId : itemIds) {
|
||||
ItemsDto itemsDto = ItemsDto.builder()
|
||||
.itemId(itemId)
|
||||
.itemName("아이템 이름" + itemId)
|
||||
.build();
|
||||
items.add(itemsDto);
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,12 +3,10 @@ package com.justpickup.storeservice.domain.item.web;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.justpickup.storeservice.config.TestConfig;
|
||||
import com.justpickup.storeservice.domain.category.dto.CategoryDto;
|
||||
import com.justpickup.storeservice.domain.favoritestore.repository.FavoriteStoreRepository;
|
||||
import com.justpickup.storeservice.domain.item.dto.FetchItemDto;
|
||||
import com.justpickup.storeservice.domain.item.dto.ItemDto;
|
||||
import com.justpickup.storeservice.domain.item.service.ItemService;
|
||||
import com.justpickup.storeservice.domain.itemoption.entity.OptionType;
|
||||
import com.justpickup.storeservice.domain.store.repository.StoreRepository;
|
||||
import com.justpickup.storeservice.global.dto.Code;
|
||||
import com.justpickup.storeservice.global.entity.Yn;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
@@ -78,7 +76,7 @@ class ItemOwnerApiControllerTest {
|
||||
|
||||
Page<ItemDto> page = PageableExecutionUtils.getPage(items, Pageable.ofSize(10), () -> 1);
|
||||
|
||||
given(itemService.findItemList(eq(1L),eq(""),any()))
|
||||
given(itemService.findMenuItemList(eq(1L),eq(""),any()))
|
||||
.willReturn(page);
|
||||
|
||||
// WHEN
|
||||
|
||||
Reference in New Issue
Block a user