Skip to content

Commit

Permalink
[#85] test : 식단 조회, 삭제 기능을 테스트 한다
Browse files Browse the repository at this point in the history
  • Loading branch information
packdev937 committed Jan 20, 2024
1 parent 3251019 commit beaf008
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 29 deletions.
46 changes: 22 additions & 24 deletions src/main/java/ssu/eatssu/domain/menu/service/MenuService.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,24 @@ public void createMeal(Date date, Restaurant restaurant, TimePart timePart,
addMenusToMeal(newMeal, restaurant, request);
}

public MenusInformationResponse findMenusInMeal(Long mealId) {
Meal meal = getMeal(mealId);
return MenusInformationResponse.from(meal);
}

public void deleteMeal(Long mealId) {
Meal meal = getMeal(mealId);

List<Menu> menus = meal.getMealMenus().stream()
.map(MealMenu::getMenu)
.toList();

mealRepository.delete(meal);
mealRepository.flush();

deleteUnusedMenus(menus);
}

private void addMenusToMeal(Meal meal, Restaurant restaurant, MealCreateRequest request) {
for (String menuName : request.getMenuNames()) {
Menu menu = createMenuIfNotExists(menuName, restaurant);
Expand Down Expand Up @@ -109,29 +127,9 @@ private List<Meal> getMeals(Date date, TimePart timePart, Restaurant restaurant)
return meals;
}

public MenusInformationResponse findMenusInMeal(Long mealId) {
Meal meal = getMeal(mealId);
return MenusInformationResponse.from(meal);
}

public void deleteMeal(Long mealId) {
Meal meal = getMeal(mealId);

List<Menu> menus = meal.getMealMenus().stream()
.map(MealMenu::getMenu)
.toList();

mealRepository.delete(meal);
mealRepository.flush();

cleanupGarbageMenu(menus);
}

private void cleanupGarbageMenu(List<Menu> menuList) {
for (Menu menu : menuList) {
if (menu.getMealMenus().isEmpty()) {
menuRepository.delete(menu);
}
}
private void deleteUnusedMenus(List<Menu> menus) {
menus.stream()
.filter(menu -> menu.getMealMenus().isEmpty())
.forEach(menuRepository::delete);
}
}
45 changes: 40 additions & 5 deletions src/test/java/ssu/eatssu/domain/menu/service/MenuServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.springframework.boot.test.context.SpringBootTest;
import ssu.eatssu.domain.menu.dto.MenuRequest.MealCreateRequest;
import ssu.eatssu.domain.menu.dto.MenuResponse.MenuInformationResponse;
import ssu.eatssu.domain.menu.dto.MenuResponse.MenusInformationResponse;
import ssu.eatssu.domain.menu.entity.Menu;
import ssu.eatssu.domain.menu.repository.MealRepository;
import ssu.eatssu.domain.menu.repository.MenuRepository;
Expand Down Expand Up @@ -54,6 +55,17 @@ void setUp() {

@Test
void 식단을_생성한다() {
식단_생성_요청();

// then
assertThat(mealRepository.findAll()).hasSize(1);
assertThat(menuRepository.findAll()).hasSize(3);
assertThat(menuRepository.findAll())
.extracting(Menu::getName)
.containsExactly("돈까스", "샐러드", "김치");
}

private Long 식단_생성_요청() {
// given
Date date = Date.valueOf("2024-01-03");
Restaurant haksik = Restaurant.from("학생 식당");
Expand All @@ -62,11 +74,34 @@ void setUp() {
// when
menuService.createMeal(date, haksik, LUNCH, request);

return mealRepository.findAll().stream()
.findFirst()
.orElseThrow(() -> new RuntimeException("Meal not created"))
.getId();
}

@Test
void 식단을_조회한다() {
// given
Long createdMealId = 식단_생성_요청();

// when
MenusInformationResponse response = menuService.findMenusInMeal(createdMealId);

// then
assertThat(mealRepository.findAll()).hasSize(1);
assertThat(menuRepository.findAll()).hasSize(3);
assertThat(menuRepository.findAll())
.extracting(Menu::getName)
.containsExactly("돈까스", "샐러드", "김치");
assertThat(response.getMenusInformation()).hasSize(3);
}

@Test
void 식단을_삭제한다() {
// given
Long createdMealId = 식단_생성_요청();

// when
menuService.deleteMeal(createdMealId);

// then
assertThat(mealRepository.findAll()).hasSize(0);
assertThat(menuRepository.findAll()).hasSize(0);
}
}

0 comments on commit beaf008

Please sign in to comment.