test(store): 아이템 고유번호들로 아이템 정보 찾기 테스트

This commit is contained in:
bum12ark
2022-03-15 17:38:41 +09:00
parent f32c7c1f89
commit ee85daa3a8
7 changed files with 71 additions and 18 deletions

View File

@@ -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']

View File

@@ -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();

View File

@@ -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);

View File

@@ -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);

View File

@@ -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()

View File

@@ -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;
}
}

View File

@@ -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