Skip to content

Commit

Permalink
Merge pull request #102 from modu-menu/feat/update-food-type
Browse files Browse the repository at this point in the history
기획 변경에 따른 음식점 카테고리 Enum 변경
  • Loading branch information
eelseungmin authored May 16, 2024
2 parents 429948a + aea5371 commit 7d18d40
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 15 deletions.
39 changes: 29 additions & 10 deletions src/main/java/modu/menu/food/domain/FoodType.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,37 @@
@AllArgsConstructor
public enum FoodType {

MEAT("한식", "육류,고기요리"),
SEAFOOD("한식", "해물,생선요리"),
KOREAN_FOOD("한식", "한식"),
KOREAN_SEAFOOD("한식", "해물,생선"),
CONGEE("한식", "죽"),
JOKBAL("한식", "족발, 보쌈"),
HOT_POP("한식", "찌개,전골"),
MEAT("한식", "육류,고기"),
SUNDAE("한식", "순대"),
STREET_FOOD("한식", "분식"),
NOODLE("한식", "면"),
LUNCH_BOX("한식", "도시락"),
KOREAN_CHICKEN("한식", "닭요리"),
INTESTINE("한식", "곱창,막창"),
TEPPAN_YAKI("한식", "철판요리"),
JAPANESE_FOOD("일식", "일식"),
CHINESE_FOOD("중식", "중식"),
WESTERN_FOOD("양식", "양식"),
HAMBURGER("양식", "햄버거"),
WESTERN_SEAFOOD("양식", "해산물"),
PIZZA("양식", "피자"),
FRENCH_FOOD("양식", "프랑스음식"),
FAST_FOOD("양식", "패스트푸드"),
FAMILY_RESTAURANT("양식", "패밀리레스토랑"),
CHICKEN("양식", "치킨"),
ITALIAN_FOOD("양식", "이탈리안"),
SPANISH_FOOD("양식", "스페인"),
SALAD("양식", "샐러드"),
LATIN("양식", "멕시칸,브라질"),
INDOOR_BAR("술집", "실내 포장마차"),
FISHCAKE_BAR("술집", "오뎅바"),
WINE_BAR("술집", "와인바"),
COCKTAIL_BAR("술집", "칵테일바"),
IZAKAYA("술집", "일본식주점"),
HOF("술집", "호프,요리주점"),
FUSION("퓨전요리", "퓨전요리"),
CHICKEN("치킨", "치킨");
ASIAN_FOOD("아시아음식", "아시아음식"),
BAR("술집", "술집"),
BUFFET("뷔페", "뷔페"),
DESSERT("디저트", "디저트");

private final String title;
private final String detail;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,11 @@ public interface ParticipantRepository extends JpaRepository<Participant, Long>
where p.user.id = :userId
""")
Optional<Participant> findByUserId(@Param("userId") Long userId);

@Query("""
select p
from Participant p
where p.user.id = :userId and p.vote.id = :voteId
""")
Optional<Participant> findByUserIdAndVoteId(@Param("userId") Long userId, @Param("voteId") Long voteId);
}
10 changes: 6 additions & 4 deletions src/main/java/modu/menu/place/api/PlaceController.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,12 @@ public class PlaceController {

private final PlaceService placeService;

@Operation(summary = "음식점 후보 검색", description = "투표에 포함시킬 음식점 후보를 사용자의 입력 값을 바탕으로 검색합니다. 조건을 만족하는 음식점이 없을 경우 null을 반환합니다.\n\n" +
"다음 Query String의 경우 대소문자를 구분하지 않습니다.\n\n" +
"food: MEAT(육류,고기요리), SEAFOOD(해물,생선요리), WESTERN_FOOD(양식), LATIN(멕시칸,브라질), INDOOR_BAR(실내 포장마차), FISHCAKE_BAR(오뎅바), WINE_BAR(와인바), COCKTAIL_BAR(칵테일바), IZAKAYA(일본식주점), HOF(호프,요리주점), FUSION(퓨전요리), CHICKEN(치킨)\n\n" +
"vibe: NOISY(시끌벅적해요), TRENDY(트렌디해요), GOOD_SERVICE(서비스가 좋아요), QUIET(조용해요), MODERN(모던해요), NICE_VIEW(뷰맛집이에요)")
@Operation(summary = "음식점 후보 검색", description = """
투표에 포함시킬 음식점 후보를 사용자의 입력 값을 바탕으로 검색합니다. 조건을 만족하는 음식점이 없을 경우 null을 반환합니다.
다음 Query String의 경우 대소문자를 구분하지 않습니다.
food: KOREAN_FOOD(한식), KOREAN_SEAFOOD(한식 > 해물,생선), CONGEE(한식 > 죽), JOKBAL(한식 > 족발, 보쌈), HOT_POP(한식 > 찌개,전골), MEAT(한식 > 육류,고기), SUNDAE(한식 > 순대), STREET_FOOD(한식 > 분식), NOODLE(한식 > 면), LUNCH_BOX(한식 > 도시락), KOREAN_CHICKEN(한식 > 닭요리), INTESTINE(한식 > 곱창,막창), TEPPAN_YAKI(한식 > 철판요리), JAPANESE_FOOD(일식), CHINESE_FOOD(중식), WESTERN_FOOD(양식), HAMBURGER(양식 > 햄버거), WESTERN_SEAFOOD(양식 > 해산물), PIZZA(양식 > 피자), FRENCH_FOOD(양식 > 프랑스음식), FAST_FOOD(양식 > 패스트푸드), FAMILY_RESTAURANT(양식 > 패밀리레스토랑), CHICKEN(양식 > 치킨), ITALIAN_FOOD(양식 > 이탈리안), SPANISH_FOOD(양식 > 스페인), SALAD(양식 > 샐러드), LATIN(양식 > 멕시칸,브라질), ASIAN_FOOD(아시아음식), BAR(술집), BUFFET(뷔페), DESSERT(디저트)
vibe: NOISY(시끌벅적해요), TRENDY(트렌디해요), GOOD_SERVICE(서비스가 좋아요), QUIET(조용해요), MODERN(모던해요), NICE_VIEW(뷰맛집이에요)""")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "검색이 성공한 경우"),
@ApiResponse(responseCode = "400", description = "Query String이 형식에 맞지 않을 경우", content = @Content(schema = @Schema(implementation = ApiFailResponse.class))),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,47 @@ void findByUserIdReturnEmptyParticipant() {
assertThat(result).isEmpty();
}

@DisplayName("userId, voteId를 통해 회원이 투표에 초대 받은 사람인지 확인한다.")
@Test
void findByUserIdAndVoteId() {
// given
User user1 = createUser("[email protected]");
User user2 = createUser("[email protected]");
Vote vote1 = createVote(VoteStatus.ACTIVE);
Participant participant = createParticipant(user1, vote1, VoteRole.PARTICIPANT);
userRepository.saveAll(List.of(user1, user2));
voteRepository.save(vote1);
participantRepository.save(participant);

// when
Optional<Participant> result = participantRepository.findByUserIdAndVoteId(user1.getId(), vote1.getId());

// then
assertThat(result)
.isNotEmpty()
.get()
.hasFieldOrPropertyWithValue("id", 1L);
}

@DisplayName("초대 받지 않은 회원의 userId와 voteId를 통해 회원이 투표에 초대 받은 사람인지 확인한다.")
@Test
void findByUserIdAndVoteIdReturnEmptyParticipant() {
// given
User user1 = createUser("[email protected]");
User user2 = createUser("[email protected]");
Vote vote1 = createVote(VoteStatus.ACTIVE);
Participant participant = createParticipant(user1, vote1, VoteRole.PARTICIPANT);
userRepository.saveAll(List.of(user1, user2));
voteRepository.save(vote1);
participantRepository.save(participant);

// when
Optional<Participant> result = participantRepository.findByUserIdAndVoteId(user2.getId(), vote1.getId());

// then
assertThat(result).isEmpty();
}

private User createUser(String email) {
return User.builder()
.email(email)
Expand Down
6 changes: 5 additions & 1 deletion src/test/java/modu/menu/vote/service/VoteServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import modu.menu.food.repository.FoodRepository;
import modu.menu.participant.domain.Participant;
import modu.menu.participant.domain.VoteRole;
import modu.menu.participant.repository.ParticipantRepository;
import modu.menu.place.domain.Place;
import modu.menu.place.reposiotry.PlaceRepository;
import modu.menu.placefood.domain.PlaceFood;
Expand Down Expand Up @@ -63,6 +64,8 @@ class VoteServiceTest extends IntegrationTestSupporter {
private VoteItemRepository voteItemRepository;
@Autowired
private ChoiceRepository choiceRepository;
@Autowired
private ParticipantRepository participantRepository;

@DisplayName("회원을 투표에 초대한다.")
@Test
Expand All @@ -79,6 +82,7 @@ void invite() {
voteService.invite(voteId, userId);

// then
assertThat(participantRepository.findByUserIdAndVoteId(userId, voteId).get()).isNotNull();
}

@DisplayName("존재하지 않는 투표에 회원을 초대할 수 없다.")
Expand Down Expand Up @@ -178,7 +182,7 @@ void getVoteResult() {
.containsExactlyInAnyOrder(
tuple("타코벨", "멕시칸,브라질", "address", "2.5km", "image", "33%"),
tuple("이자카야모리", "멕시칸,브라질", "address", "2.5km", "image", "33%"),
tuple("서가앤쿡 노원역점", "육류,고기요리", "address", "2.5km", "image", "33%")
tuple("서가앤쿡 노원역점", "육류,고기", "address", "2.5km", "image", "33%")
);
assertThat(
voteResult.getResults().stream()
Expand Down

0 comments on commit 7d18d40

Please sign in to comment.