728x90
320x100
[참고]
김영한님 스프링 강의를 바탕으로 진행되는 토이프로젝트의 과정을 기록하는 글입니다.
둥근 피드백은 언제나 환영입니다.
[오늘의 개발내용]
1. 타임라인 도메인 생성 (TimeLIne, TimeLineRepository)
2. 생성된 타임라인 도메인을 junit을 통해 테스트 해봄 (TimeLineRepositoryTest)
간단 요구사항 (Timeline)
타임라인 도메인
- 타임라인아이디
- 회원아이디
- 책아이디
- 책이미지
- 내용
- 마지막수정일
타임라인 관리기능
- 타임라인 등록
- 타임라인 상세
- 타임라인 수정 (삭제는 논리적 삭제)
1. 타임라인 도메인 생성 (TimeLIne)
package toyproject.bookbookclub.domain.Timeline;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class Timeline {
private String timelimeId;
private String bookId;
private String bookImg;
private String memberId;
private String content;
private String lastUpdateDate;
public Timeline() {
}
//save
public Timeline(String timelimeId, String bookId, String bookImg, String memberId, String content, String lastUpdateDate) {
this.timelimeId = timelimeId;
this.bookId = bookId;
this.bookImg = bookImg;
this.memberId = memberId;
this.content = content;
this.lastUpdateDate = lastUpdateDate;
}
}
1. 타임라인 도메인 생성 (TimeLineRepository)
package toyproject.bookbookclub.domain.Timeline;
import org.springframework.stereotype.Repository;
import toyproject.bookbookclub.domain.Members.Member;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Repository
public class TimeLineRepository {
private static final Map<String, Timeline> store = new ConcurrentHashMap<>(); //static 사용
public Timeline save(Timeline timeline){
store.put(timeline.getTimelimeId(), timeline);
return timeline;
}
public Timeline findByTimelineId(String timeLineId){
return store.get(timeLineId);
}
public List<Timeline> findAll(){
return new ArrayList<>(store.values());
}
public void update(String timelineId, Timeline updateParam){
Timeline timeline = findByTimelineId(timelineId);
timeline.setContent(updateParam.getContent());
timeline.setLastUpdateDate(updateParam.getLastUpdateDate());
}
public void clearStore(){
store.clear();
}
}
[기본생성자는 왜 사용하는가] 에 대한 내용을 잘 정리한 블로그가 있어 주소를 첨부함.
https://colour-my-memories-blue.tistory.com/16
2. 생성된 타임라인 도메인을 junit을 통해 테스트 해봄 (TimeLineRepositoryTest)
package toyproject.bookbookclub.domain.Timeline;
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.*;
import static org.junit.jupiter.api.Assertions.*;
class TimeLineRepositoryTest {
TimeLineRepository timeLineRepository = new TimeLineRepository();
@AfterEach
void afterEach(){ timeLineRepository.clearStore();}
@Test
void save(){
//given
Timeline timeline = new Timeline("1", "bookid", "bookImg", "memberId", "contnet", "2024-01-01");
//when
Timeline saveTimeline = timeLineRepository.save(timeline);
//then
//option + enter : assert 단축
Timeline findTimeline = timeLineRepository.findByTimelineId(timeline.getTimelimeId());
assertThat(findTimeline).isEqualTo(timeline);
}
@Test
void findAll(){
//gvien
Timeline timeline1 = new Timeline("1", "bookid1", "bookImg1", "memberId1", "contnet1", "2024-01-01");
Timeline timeline2 = new Timeline("2", "bookid2", "bookImg2", "memberId2", "contnet2", "2024-01-02");
timeLineRepository.save(timeline1);
timeLineRepository.save(timeline2);
//when
List<Timeline> result = timeLineRepository.findAll();
//then
Assertions.assertThat(result.size()).isEqualTo(2);
}
@Test
void updateTimeline(){
//given
//저장할 데이터 생성
Timeline timeline = new Timeline("1", "bookid1", "bookImg1", "memberId1", "contnet1", "2024-01-01");
//저장
Timeline savedTimeline = timeLineRepository.save(timeline);
//저장된 데이터의 타임라인 아이디 가져옴
String timelineId = savedTimeline.getTimelimeId();
//when
//업데이트 할 데이터 생성
Timeline updateParam = new Timeline("1", "bookid1", "bookImg1", "memberId1", "contnet2", "2024-01-01");
//업데이트
timeLineRepository.update(timelineId, updateParam);
//저장한 데이터의 타임라인 데이터 가져옴
Timeline findId = timeLineRepository.findByTimelineId(timelineId);
//then
Assertions.assertThat(findId.getContent()).isEqualTo(updateParam.getContent());
}
}
728x90
320x100
'💻 뚝딱뚝딱 > 북북클럽' 카테고리의 다른 글
[개발일지#006] 회원가입 폼 HTML 만들기 (0) | 2024.01.17 |
---|---|
[개발일지#005] 회원 상세 HTML 만들기 (0) | 2024.01.16 |
[개발일지#004] 전체 타임라인 HTML 만들기 (0) | 2024.01.15 |
[개발일지#002] 회원(Member) 목록 만들기(feat. 부트스트랩, 타임리프) (0) | 2024.01.11 |
[개발일지#001] 프로젝트 생성, User 도메인 생성 및 테스트 (0) | 2024.01.10 |