Item 상품 객체
package hello.itemservice.domain.item;
import lombok.Data;
@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 저장소 객체
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
public class ItemRepository {
private static final Map<Long, Item> store = new HashMap<>();
private static long sequence = 0L;
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();
}
}
저장 기능, id값으로 찾는 기능, 모두 찾는 기능, 값을 변경하는 기능이 있다.
package hello.itemservice.item;
import hello.itemservice.domain.item.Item;
import hello.itemservice.domain.item.ItemRepository;
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.*;
class ItemRepositoryTest {
ItemRepository itemRepository = new ItemRepository();
@AfterEach
void afterEach(){
itemRepository.clearStore();;
}
@Test
void save(){
//given
Item item = new Item("itemA",10000,10);
//when
Item saveItem = itemRepository.save(item);
//then
Item findItem = itemRepository.findById(item.getId());
assertThat(findItem).isEqualTo(saveItem);
}
@Test
void findAll(){
//given
Item item1 = new Item("item1",10000,10);
Item item2 = new Item("item2",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 item = new Item("item1",10000,10);
Item savedItem = itemRepository.save(item);
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());
}
}
저장소에 대한 테스트작업도 완료하였다.
'웹프로그래밍 > 스프링 MVC' 카테고리의 다른 글
| 55. 상품 목록 - 타임 리프 (0) | 2022.04.16 |
|---|---|
| 54. 상품 서비스 HTML (0) | 2022.04.15 |
| 52. 요구사항 분석 (0) | 2022.04.14 |
| 51. 프로젝트 생성 (0) | 2022.04.14 |
| 50. 요청 매핑 핸들러 어댑터 구조 (0) | 2022.04.11 |