Skip to content

Commit

Permalink
item-service 아이템 삭제 기능 구현: HiddenHttpMethodFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
HiiWee committed Jul 18, 2022
1 parent 6553511 commit f1f6836
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ public void update(Long itemId, Item updateParam) {
findItem.setQuantity(updateParam.getQuantity());
}

public Item delete(Long itemId) {
return store.remove(itemId);
}

public void clearStore() {
store.clear();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,15 @@ public String editForm(@PathVariable Long itemId, @ModelAttribute Item item) {
return "redirect:/basic/items/{itemId}";
}

// 상품 삭제
@DeleteMapping("/{itemId}/delete")
public String deleteForm(@PathVariable Long itemId, RedirectAttributes redirectAttributes) {
Item deletedItem = itemRepository.delete(itemId);
redirectAttributes.addAttribute("itemName", deletedItem.getItemName());
redirectAttributes.addAttribute("status", true);
return "redirect:/basic/items";
}

/**
* 테스트용 데이터 추가
*/
Expand Down
3 changes: 2 additions & 1 deletion item-service/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@

# HTTP form으로 GET, POST 말고 다른 메소드도 사용할 수 있게 필터 설정
spring.mvc.hiddenmethod.filter.enabled=true
7 changes: 7 additions & 0 deletions item-service/src/main/resources/templates/basic/item.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ <h2 th:if="${param.status}" th:text="'저장 완료'"></h2>
onclick="location.href='editForm.html'" type="button">상품 수정
</button>
</div>
<div class="col">
<form action="item.html" th:action="@{/basic/items/{itemId}/delete(itemId = ${item.id})}" method="post">
<input type="hidden" name="_method" value="delete">
<button class="w-100 btn btn-primary btn-lg" type="submit">상품 삭제
</button>
</form>
</div>
<div class="col">
<button class="w-100 btn btn-secondary btn-lg"
th:onclick="|location.href='@{/basic/items/}'|"
Expand Down
3 changes: 3 additions & 0 deletions item-service/src/main/resources/templates/basic/items.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
<div class="py-5 text-center">
<h2>상품 목록</h2>
</div>

<h2 th:if="${param.status}" th:text="|${param.itemName}이 삭제됐습니다.|"></h2>

<div class="row">
<div class="col">
<button class="btn btn-primary float-end"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,22 @@ void updateItem() {
assertThat(findItem.getQuantity()).isEqualTo(updateParam.getQuantity());
assertThat(findItem.getId()).isEqualTo(itemId);
}

@Test
void deleteItem() {
// given
Item item = new Item("itemA", 10000, 20);

Item savedItem = itemRepository.save(item);
Long itemId = savedItem.getId();

// when
Item deletedItem = itemRepository.delete(itemId);

// then
assertThat(deletedItem.getItemName()).isEqualTo(savedItem.getItemName());
assertThat(deletedItem.getPrice()).isEqualTo(savedItem.getPrice());
assertThat(deletedItem.getQuantity()).isEqualTo(savedItem.getQuantity());
assertThat(deletedItem.getId()).isEqualTo(savedItem.getId());
}
}

0 comments on commit f1f6836

Please sign in to comment.