Skip to content

Commit 564b27e

Browse files
committed
fix: 테스트코드 수정
1 parent 9ed50b7 commit 564b27e

File tree

2 files changed

+133
-96
lines changed

2 files changed

+133
-96
lines changed

src/main/java/dmu/dasom/api/global/file/entity/FileEntity.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,12 @@ public class FileEntity {
3232
@ManyToOne
3333
@JoinColumn(name = "news_id")
3434
private NewsEntity news;
35+
36+
public FileEntity(Long id, String originalName, String base64Data, String fileType, Long fileSize) {
37+
this.id = id;
38+
this.originalName = originalName;
39+
this.base64Data = base64Data;
40+
this.fileType = fileType;
41+
this.fileSize = fileSize;
42+
}
3543
}

src/test/java/dmu/dasom/api/domain/news/NewsServiceTest.java

Lines changed: 125 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -36,36 +36,27 @@ class NewsServiceTest {
3636
@InjectMocks
3737
private NewsService newsService;
3838

39-
@Test
40-
@DisplayName("뉴스 전체 조회 - 성공")
41-
void getAllNews_success() {
42-
// Given
43-
List<String> imageUrls1 = List.of("/path/image1.jpg");
44-
List<String> imageUrls2 = List.of("/path/image2.jpg");
45-
46-
NewsEntity news1 = new NewsEntity(1L, "뉴스1", "내용1", imageUrls1);
47-
NewsEntity news2 = new NewsEntity(2L, "뉴스2", "내용2", imageUrls2);
48-
49-
when(newsRepository.findAll()).thenReturn(List.of(news1, news2));
50-
51-
// When
52-
List<NewsResponseDto> newsList = newsService.getAllNews();
53-
54-
// Then
55-
assertThat(newsList).hasSize(2);
56-
assertThat(newsList.get(0).getTitle()).isEqualTo("뉴스1");
57-
assertThat(newsList.get(1).getTitle()).isEqualTo("뉴스2");
58-
59-
verify(newsRepository, times(1)).findAll();
60-
}
61-
6239
@Test
6340
@DisplayName("뉴스 개별 조회 - 성공")
6441
void getNewsById_success() {
6542
// Given
6643
Long id = 1L;
67-
List<String> imageUrls = List.of("/path/image1.jpg");
68-
NewsEntity news = new NewsEntity(id, "뉴스1", "내용1", imageUrls);
44+
List<FileEntity> images = List.of(
45+
FileEntity.builder()
46+
.id(1L)
47+
.originalName("image1.jpg")
48+
.base64Data("base64_encoded_data")
49+
.fileType("image/jpeg")
50+
.fileSize(1024L)
51+
.build()
52+
);
53+
54+
NewsEntity news = NewsEntity.builder()
55+
.id(id)
56+
.title("뉴스1")
57+
.content("내용1")
58+
.images(images)
59+
.build();
6960

7061
when(newsRepository.findById(id)).thenReturn(Optional.of(news));
7162

@@ -92,83 +83,121 @@ void getNewsById_fail() {
9283
assertThat(exception.getErrorCode()).isEqualTo(ErrorCode.NOT_FOUND);
9384
verify(newsRepository, times(1)).findById(id);
9485
}
95-
//
96-
// @Test
97-
// @DisplayName("뉴스 생성 - 성공")
98-
// void createNews_success() {
99-
// // Given
100-
// List<Long> fileIds = List.of(1L, 2L);
101-
// List<FileEntity> fileEntities = List.of(
102-
// FileEntity file1 = new FileEntity(1L, "image1.jpg", "stored_image1.jpg", "/path/image1.jpg", "image/jpeg", 1024L);
103-
// FileEntity file2 = new FileEntity(2L, "image2.jpg", "stored_image2.jpg", "/path/image2.jpg", "image/png", 2048L);
104-
//
105-
// );
106-
//
107-
// List<String> imageUrls = fileEntities.stream()
108-
// .map(FileEntity::getFilePath)
109-
// .collect(Collectors.toList());
110-
//
111-
// NewsRequestDto requestDto = new NewsRequestDto("새 뉴스", "새 내용", fileIds);
112-
//
113-
// when(fileRepository.findAllById(anyIterable())).thenReturn(fileEntities);
114-
// when(newsRepository.save(any(NewsEntity.class)))
115-
// .thenAnswer(invocation -> {
116-
// NewsEntity news = invocation.getArgument(0);
117-
// return new NewsEntity(1L, news.getTitle(), news.getContent(), imageUrls);
118-
// });
119-
//
120-
// // When
121-
// NewsResponseDto responseDto = newsService.createNews(requestDto);
122-
//
123-
// // Then
124-
// assertThat(responseDto.getId()).isEqualTo(1L);
125-
// assertThat(responseDto.getTitle()).isEqualTo("새 뉴스");
126-
// assertThat(responseDto.getContent()).isEqualTo("새 내용");
127-
// assertThat(responseDto.getImageUrls()).containsExactly("/path/image1.jpg", "/path/image2.jpg");
128-
//
129-
// verify(newsRepository, times(1)).save(any(NewsEntity.class));
130-
// }
131-
132-
// @Test
133-
// @DisplayName("뉴스 수정 - 성공")
134-
// void updateNews_success() {
135-
// // Given
136-
// Long id = 1L;
137-
// List<String> oldImageUrls = List.of("/path/old_image.jpg");
138-
// NewsEntity existingNews = new NewsEntity(id, "기존 뉴스", "기존 내용", oldImageUrls);
139-
//
140-
// List<Long> updatedFileIds = List.of(3L, 4L);
141-
// List<FileEntity> updatedFiles = List.of(
142-
// new FileEntity(3L, "updated_image1.jpg", "stored_updated_image1.jpg", "/path/updated_image1.jpg", "image/jpeg", 1024L),
143-
// new FileEntity(4L, "updated_image2.jpg", "stored_updated_image2.jpg", "/path/updated_image2.jpg", "image/jpeg", 2048L)
144-
// );
145-
//
146-
// List<String> updatedImageUrls = updatedFiles.stream()
147-
// .map(FileEntity::getFilePath)
148-
// .collect(Collectors.toList());
149-
//
150-
// NewsRequestDto updateRequest = new NewsRequestDto("수정된 뉴스", "수정된 내용", updatedFileIds);
151-
//
152-
// when(newsRepository.findById(id)).thenReturn(Optional.of(existingNews));
153-
// when(fileRepository.findAllById(updatedFileIds)).thenReturn(updatedFiles);
154-
//
155-
// // When
156-
// NewsResponseDto updatedNews = newsService.updateNews(id, updateRequest);
157-
//
158-
// // Then
159-
// assertThat(updatedNews.getTitle()).isEqualTo("수정된 뉴스");
160-
// assertThat(updatedNews.getContent()).isEqualTo("수정된 내용");
161-
// assertThat(updatedNews.getImageUrls()).containsExactlyElementsOf(updatedImageUrls);
162-
//
163-
// verify(newsRepository, times(1)).findById(id);
164-
// }
86+
87+
@Test
88+
@DisplayName("뉴스 생성 - 성공")
89+
void createNews_success() {
90+
// Given
91+
List<Long> fileIds = List.of(1L, 2L);
92+
List<FileEntity> fileEntities = List.of(
93+
FileEntity.builder()
94+
.id(1L)
95+
.originalName("image1.jpg")
96+
.base64Data("base64_encoded_data1")
97+
.fileType("image/jpeg")
98+
.fileSize(1024L)
99+
.build(),
100+
101+
FileEntity.builder()
102+
.id(2L)
103+
.originalName("image2.jpg")
104+
.base64Data("base64_encoded_data2")
105+
.fileType("image/png")
106+
.fileSize(2048L)
107+
.build()
108+
);
109+
110+
NewsRequestDto requestDto = new NewsRequestDto("새 뉴스", "새 내용", fileIds);
111+
112+
when(fileRepository.findAllById(anyIterable())).thenReturn(fileEntities);
113+
when(newsRepository.save(any(NewsEntity.class)))
114+
.thenAnswer(invocation -> {
115+
NewsEntity news = invocation.getArgument(0);
116+
return NewsEntity.builder()
117+
.id(1L)
118+
.title(news.getTitle())
119+
.content(news.getContent())
120+
.images(news.getImages())
121+
.build();
122+
});
123+
124+
// When
125+
NewsResponseDto responseDto = newsService.createNews(requestDto);
126+
127+
// Then
128+
assertThat(responseDto.getId()).isEqualTo(1L);
129+
assertThat(responseDto.getTitle()).isEqualTo("새 뉴스");
130+
assertThat(responseDto.getContent()).isEqualTo("새 내용");
131+
132+
verify(newsRepository, times(1)).save(any(NewsEntity.class));
133+
}
134+
135+
@Test
136+
@DisplayName("뉴스 수정 - 성공")
137+
void updateNews_success() {
138+
// Given
139+
Long id = 1L;
140+
List<FileEntity> oldImages = List.of(
141+
FileEntity.builder()
142+
.id(1L)
143+
.originalName("old_image.jpg")
144+
.base64Data("old_base64_data")
145+
.fileType("image/jpeg")
146+
.fileSize(1024L)
147+
.build()
148+
);
149+
150+
NewsEntity existingNews = NewsEntity.builder()
151+
.id(id)
152+
.title("기존 뉴스")
153+
.content("기존 내용")
154+
.images(oldImages)
155+
.build();
156+
157+
List<Long> updatedFileIds = List.of(3L, 4L);
158+
List<FileEntity> updatedFiles = List.of(
159+
FileEntity.builder()
160+
.id(3L)
161+
.originalName("updated_image1.jpg")
162+
.base64Data("updated_base64_data1")
163+
.fileType("image/jpeg")
164+
.fileSize(1024L)
165+
.build(),
166+
167+
FileEntity.builder()
168+
.id(4L)
169+
.originalName("updated_image2.jpg")
170+
.base64Data("updated_base64_data2")
171+
.fileType("image/jpeg")
172+
.fileSize(2048L)
173+
.build()
174+
);
175+
176+
NewsRequestDto updateRequest = new NewsRequestDto("수정된 뉴스", "수정된 내용", updatedFileIds);
177+
178+
when(newsRepository.findById(id)).thenReturn(Optional.of(existingNews));
179+
when(fileRepository.findAllById(updatedFileIds)).thenReturn(updatedFiles);
180+
181+
// When
182+
NewsResponseDto updatedNews = newsService.updateNews(id, updateRequest);
183+
184+
// Then
185+
assertThat(updatedNews.getTitle()).isEqualTo("수정된 뉴스");
186+
assertThat(updatedNews.getContent()).isEqualTo("수정된 내용");
187+
188+
verify(newsRepository, times(1)).findById(id);
189+
}
165190

166191
@Test
167192
@DisplayName("뉴스 삭제 - 성공")
168193
void deleteNews_success() {
169194
// Given
170195
Long id = 1L;
171-
NewsEntity existingNews = new NewsEntity(id, "삭제할 뉴스", "삭제할 내용", List.of());
196+
NewsEntity existingNews = NewsEntity.builder()
197+
.id(id)
198+
.title("삭제할 뉴스")
199+
.content("삭제할 내용")
200+
.build();
172201

173202
when(newsRepository.findById(id)).thenReturn(Optional.of(existingNews));
174203
doNothing().when(newsRepository).delete(existingNews);

0 commit comments

Comments
 (0)