상품 객체
package hello.itemservice.domain.item;
import lombok.Data;
//@Getter
//@Setter
@Data
public class Item {
private Long id;
private String itemName;
private Integer price;
private Integer quantity;
public Item() {
}
public Item(String itemName, Integer price, Integer quantity) {
this.itemName = itemName;
this.price = price;
this.quantity = quantity;
}
}
Item의 구성 요소
1) id
2) itemName
3) price
4) quantity
상품 저장소(ItemRepository)
package hello.itemservice.domain.item;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository// component scan의 대상이 된다.
public class ItemRepository {
private static final Map<Long,Item> store = new HashMap<>(); //static
private static long sequence = 0L; //static
public Item save(Item item){
item.setId(++sequence);
store.put(item.getId(),item);
return item;
}
public Item findById(Long id){
return store.get(id);
}
public List<Item> findAll(){
return new ArrayList<>(store.values());
}
public void update(Long itemId, Item updateParam){
Item findItem = findById(itemId);
findItem.setItemName(updateParam.getItemName());
findItem.setPrice(updateParam.getPrice());
findItem.setQuantity(updateParam.getQuantity());
}
public void clearStore(){
store.clear();
}
}
저장소 테스트 itemRepositoryTest
package hello.itemservice.domain.item;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
class ItemRepositoryTest {
ItemRepository itemRepository = new ItemRepository();
@AfterEach
void afterEach(){
itemRepository.clearStore();
}
@Test
void save(){
//given
Item item = new Item("ItemA",10000,10);
//when
Item savedItem = itemRepository.save(item);
//then
Item findItem=itemRepository.findById(item.getId());
assertThat(findItem).isEqualTo(savedItem);
}
@Test
void findAll(){
//given
Item item1 = new Item("ItemA",10000,10);
Item item2 = new Item("ItemB",20000,20);
itemRepository.save(item1);
itemRepository.save(item2);
//when
List<Item> result = itemRepository.findAll();
//then
assertThat(result.size()).isEqualTo(2);
assertThat(result).contains(item1,item2);
}
@Test
void updateItem(){
//given
Item item1 = new Item("Item1",10000,10);
Item savedItem=itemRepository.save(item1);
Long itemId = savedItem.getId();
//when
Item updateParam = new Item("item2",20000,30);
itemRepository.update(itemId,updateParam);
//then
Item findItem = itemRepository.findById(itemId);
assertThat(findItem.getItemName()).isEqualTo(updateParam.getItemName());
assertThat(findItem.getPrice()).isEqualTo(updateParam.getPrice());
assertThat(findItem.getQuantity()).isEqualTo(updateParam.getQuantity());
}
}
'BackEnd > Spring Boot' 카테고리의 다른 글
| 간단한 Web페이지 프로젝트(6) - PRG Post/Redirect/Get (0) | 2024.07.07 |
|---|---|
| 간단한 Web페이지 프로젝트(5) - 상품 수정 (0) | 2024.07.06 |
| 간단한 Web페이지 프로젝트(4)- 상품등록 처리-@ModelAttribute (1) | 2024.07.06 |
| 간단한 Web페이지 프로젝트(3)- 상품 상세 (1) | 2024.07.05 |
| 간단한 Web페이지 프로젝트(2)-상품 목록(타임리프) (2) | 2024.07.05 |