-
Notifications
You must be signed in to change notification settings - Fork 264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[레거시 코드 리팩터링 - 1단계] 테오(최우성) 미션 제출합니다. #457
Changes from all commits
0f8f4b6
70894d8
8d94285
60423f5
1ed40a0
3d07c9c
bc749bd
f3d8ff2
38ca990
77fe194
705985d
dbd0669
52c18b8
f6a7ef0
dd53f16
4115a1e
505124b
7240487
fec9582
6994d6c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package kitchenpos.application; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
import java.util.List; | ||
import kitchenpos.domain.MenuGroup; | ||
import org.junit.jupiter.api.Test; | ||
|
||
@SuppressWarnings("NonAsciiCharacters") | ||
class MenuGroupServiceTest extends ServiceTestContext { | ||
|
||
@Test | ||
void 메뉴_그룹을_생성할_수_있다() { | ||
// given | ||
MenuGroup menuGroup = new MenuGroup(); | ||
menuGroup.setName("menuGroup"); | ||
|
||
// when | ||
MenuGroup created = menuGroupService.create(menuGroup); | ||
|
||
// then | ||
assertThat(created.getId()).isNotNull(); | ||
} | ||
|
||
@Test | ||
void 모든_메뉴_그룹을_조회할_수_있다() { | ||
// given | ||
MenuGroup menuGroup = new MenuGroup(); | ||
menuGroup.setName("menuGroup"); | ||
|
||
menuGroupService.create(menuGroup); | ||
|
||
// when | ||
List<MenuGroup> menuGroups = menuGroupService.list(); | ||
|
||
// then | ||
assertThat(menuGroups).hasSize(2); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
package kitchenpos.application; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||
|
||
import java.math.BigDecimal; | ||
import java.util.List; | ||
import kitchenpos.domain.Menu; | ||
import org.assertj.core.api.SoftAssertions; | ||
import org.junit.jupiter.api.Test; | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이미 아시겠지만 이 부분에 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 감사합니다! 그런데 해당 어노테이션은 |
||
@SuppressWarnings("NonAsciiCharacters") | ||
class MenuServiceTest extends ServiceTestContext { | ||
|
||
@Test | ||
void 메뉴_가격이_0보다_작으면_예외를_던진다() { | ||
// given | ||
Menu menu = new Menu(); | ||
menu.setName("menuName"); | ||
menu.setPrice(BigDecimal.valueOf(-1)); | ||
menu.setMenuGroupId(savedMenuGroup.getId()); | ||
menu.setMenuProducts(List.of(savedMenuProduct)); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> menuService.create(menu)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 메뉴_그룹_아이디에_해당하는_메뉴_그룹이_없는_경우_예외를_던진다() { | ||
// given | ||
Menu menu = new Menu(); | ||
menu.setName("menuName"); | ||
menu.setPrice(BigDecimal.valueOf(1000L)); | ||
menu.setMenuGroupId(Long.MAX_VALUE); | ||
menu.setMenuProducts(List.of(savedMenuProduct)); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> menuService.create(menu)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 가격이_실제_메뉴_상품들의_총_가격보다_크면_예외를_던진다() { | ||
// given | ||
Menu menu = new Menu(); | ||
menu.setName("menuName"); | ||
menu.setPrice(BigDecimal.valueOf(2001L)); | ||
menu.setMenuGroupId(savedMenuGroup.getId()); | ||
menu.setMenuProducts(List.of(savedMenuProduct)); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> menuService.create(menu)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 메뉴를_정상적으로_생성하는_경우_생성한_메뉴가_반환된다() { | ||
// given | ||
Menu menu = new Menu(); | ||
menu.setName("menuName"); | ||
menu.setPrice(BigDecimal.valueOf(2000L)); | ||
menu.setMenuGroupId(savedMenuGroup.getId()); | ||
menu.setMenuProducts(List.of(savedMenuProduct)); | ||
|
||
// when | ||
Menu createdMenu = menuService.create(menu); | ||
|
||
// then | ||
SoftAssertions.assertSoftly(softly -> { | ||
softly.assertThat(createdMenu.getId()).isNotNull(); | ||
softly.assertThat(createdMenu.getName()).isEqualTo(menu.getName()); | ||
}); | ||
} | ||
|
||
@Test | ||
void 전체_메뉴를_조회할_수_있다() { | ||
// given | ||
Menu menu = new Menu(); | ||
menu.setName("menuName"); | ||
menu.setPrice(BigDecimal.valueOf(2000L)); | ||
menu.setMenuGroupId(savedMenuGroup.getId()); | ||
menu.setMenuProducts(List.of(savedMenuProduct)); | ||
|
||
menuService.create(menu); | ||
|
||
// when | ||
List<Menu> products = menuService.list(); | ||
|
||
// then | ||
assertThat(products).hasSize(2); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
package kitchenpos.application; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||
|
||
import java.util.List; | ||
import kitchenpos.domain.Order; | ||
import kitchenpos.domain.OrderLineItem; | ||
import org.assertj.core.api.SoftAssertions; | ||
import org.junit.jupiter.api.Test; | ||
|
||
@SuppressWarnings("NonAsciiCharacters") | ||
class OrderServiceTest extends ServiceTestContext { | ||
|
||
@Test | ||
void 주문_항목이_없다면_예외를_던진다() { | ||
// given | ||
Order order = new Order(); | ||
order.setOrderLineItems(List.of()); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> orderService.create(order)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 주문_항목의_메뉴가_존재하지_않는다면_예외를_던진다() { | ||
// given | ||
OrderLineItem orderLineItem = new OrderLineItem(); | ||
orderLineItem.setMenuId(Long.MAX_VALUE); | ||
orderLineItem.setQuantity(1L); | ||
|
||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(orderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> orderService.create(order)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 주문_테이블이_존재하지_않는다면_예외를_던진다() { | ||
// given | ||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(Long.MAX_VALUE); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> orderService.create(order)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 주문은_생성되면_COOKING_상태로_설정된다() { | ||
// given | ||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
|
||
// when | ||
Order createdOrder = orderService.create(order); | ||
|
||
// then | ||
assertThat(createdOrder.getOrderStatus()).isEqualTo("COOKING"); | ||
} | ||
|
||
@Test | ||
void 주문을_정상적으로_생성하는_경우_생성한_주문이_반환된다() { | ||
// given | ||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
|
||
// when | ||
Order createdOrder = orderService.create(order); | ||
|
||
// then | ||
assertThat(createdOrder.getId()).isNotNull(); | ||
} | ||
|
||
@Test | ||
void 전체_주문을_조회할_수_있다() { | ||
// given | ||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
|
||
orderService.create(order); | ||
|
||
// when | ||
List<Order> orders = orderService.list(); | ||
|
||
// then | ||
assertThat(orders).hasSize(2); | ||
} | ||
|
||
@Test | ||
void 주문이_존재하지_않으면_상태를_변경하려_할_때_예외를_던진다() { | ||
// given | ||
Long orderId = Long.MAX_VALUE; | ||
|
||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
order.setOrderStatus("MEAL"); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> orderService.changeOrderStatus(orderId, order)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 이미_완료된_주문이라면_상태를_변경할_수_없다() { | ||
// given | ||
Long orderId = savedOrder.getId(); | ||
|
||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
order.setOrderStatus("COMPLETION"); | ||
|
||
orderService.changeOrderStatus(orderId, order); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> orderService.changeOrderStatus(orderId, order)) | ||
.isInstanceOf(IllegalArgumentException.class); | ||
} | ||
|
||
@Test | ||
void 주문을_정상적으로_변경하는_경우_변경한_주문이_반환된다() { | ||
// given | ||
Long orderId = savedOrder.getId(); | ||
|
||
Order order = new Order(); | ||
order.setOrderLineItems(List.of(savedOrderLineItem)); | ||
order.setOrderTableId(savedOrderTable.getId()); | ||
order.setOrderStatus("COMPLETION"); | ||
|
||
// when | ||
Order changedOrder = orderService.changeOrderStatus(orderId, order); | ||
|
||
// then | ||
SoftAssertions.assertSoftly(softly -> { | ||
softly.assertThat(changedOrder.getId()).isNotNull(); | ||
assertThat(changedOrder.getOrderStatus()).isEqualTo("COMPLETION"); | ||
}); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
엄청 꼼꼼하게 작성하셨네요 👍