From 052c4dde9d516140313bf2573bf1625ae77f57d7 Mon Sep 17 00:00:00 2001 From: dgh06175 Date: Sat, 28 Sep 2024 13:33:22 +0900 Subject: [PATCH 1/2] =?UTF-8?q?test:=20#66=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=97=85=EB=A1=9C=EB=93=9C=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PlaylistServiceImplTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java b/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java index e452752..c468e09 100644 --- a/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java +++ b/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java @@ -252,6 +252,33 @@ class AddPlaylist { assertThat(pt.getOrderIndex()).isIn(0, 1, 2); }); } + + @Test + void 플레이리스트_생성_요청_OrderIndex_순서_잘못됨_예외발생() { + // given + PlaylistRequest.PlaylistUpload invalidPlaylistUpload = PlaylistUpload.builder() + .title("플레이리스트 제목0") + .playlistImageUrl("https://test0.com") + .tracks(List.of( + TrackOrder.builder() + .trackId(tracks.get(1).getId()) + .orderIndex(0) + .build() + ,TrackOrder.builder() + .trackId(tracks.get(1).getId()) + .orderIndex(1) + .build() + ,TrackOrder.builder() + .trackId(tracks.get(2).getId()) + .orderIndex(2) + .build() + )) + .build(); + + // when then + assertThatThrownBy(() -> playlistService.addPlaylist(members.get(0), invalidPlaylistUpload)) + .isInstanceOf(RestApiException.class); + } } @Nested From 56c8ef5785434d98e6b4f11a967ea328efd7bab5 Mon Sep 17 00:00:00 2001 From: dgh06175 Date: Sat, 28 Sep 2024 14:02:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20#66=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=83=9D=EC=84=B1=EC=8B=9C?= =?UTF-8?q?=EC=97=90=20=ED=8A=B8=EB=9E=99=20=EC=88=9C=EC=84=9C=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../playlist/service/PlaylistServiceImpl.java | 15 +++++++++++++++ .../exception/errorCode/PlaylistErrorCode.java | 1 + .../playlist/service/PlaylistServiceImplTest.java | 10 ++++------ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImpl.java b/src/main/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImpl.java index 94e755a..445b6cc 100644 --- a/src/main/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImpl.java +++ b/src/main/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImpl.java @@ -21,6 +21,7 @@ import com.cabin.plat.global.exception.errorCode.TrackErrorCode; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -45,6 +46,7 @@ public PlaylistResponse.PlayListId addPlaylist(Member member, PlaylistRequest.Pl playlistRepository.save(playlist); List trackOrders = playlistUpload.getTracks(); + validateTrackOrderOrders(trackOrders); List playlistTracks = trackOrders.stream() .map(trackOrder -> { Track track = findTrackById(trackOrder.getTrackId()); @@ -211,6 +213,19 @@ private void validateTrackOrderCount(PlaylistOrders playlistOrders, List trackOrders) { + List orderIndexes = trackOrders.stream() + .map(TrackOrder::getOrderIndex) + .sorted() + .toList(); + + for (int i = 0; i < orderIndexes.size(); i++) { + if (orderIndexes.get(i) != i) { + throw new RestApiException(PlaylistErrorCode.PLAYLIST_TRACK_ORDER_MISMATCH); + } + } + } + private void validateTrackIds(PlaylistOrders playlistOrders, List playlistTracks) { Set playlistTrackIds = playlistTracks.stream() .map(playlistTrack -> playlistTrack.getTrack().getId()) diff --git a/src/main/java/com/cabin/plat/global/exception/errorCode/PlaylistErrorCode.java b/src/main/java/com/cabin/plat/global/exception/errorCode/PlaylistErrorCode.java index 762b90d..fe0b324 100644 --- a/src/main/java/com/cabin/plat/global/exception/errorCode/PlaylistErrorCode.java +++ b/src/main/java/com/cabin/plat/global/exception/errorCode/PlaylistErrorCode.java @@ -13,6 +13,7 @@ public enum PlaylistErrorCode implements ErrorCodeInterface{ PLAYLIST_TRACK_DUPLICATE("PLAYLIST004", "이미 추가된 트랙입니다.", HttpStatus.BAD_REQUEST), PLAYLIST_TRACK_COUNT_MISMATCH("PLAYLIST005", "요청한 트랙 순서 정보의 개수와 플레이리스트에 존재하는 트랙 개수가 일치하지 않습니다.", HttpStatus.BAD_REQUEST), PLAYLIST_TRACK_ID_MISMATCH("PLAYLIST006", "플레이리스트에 존재하는 트랙들의 정보와 요청한 트랙들의 정보가 일치하지 않습니다.", HttpStatus.BAD_REQUEST), + PLAYLIST_TRACK_ORDER_MISMATCH("PLAYLIST007", "요청한 트랙들의 순서 정보가 일치하지 않습니다.", HttpStatus.BAD_REQUEST), ; private final String code; diff --git a/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java b/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java index c468e09..1693491 100644 --- a/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java +++ b/src/test/java/com/cabin/plat/domain/playlist/service/PlaylistServiceImplTest.java @@ -20,9 +20,7 @@ import com.cabin.plat.global.exception.RestApiException; import java.util.*; import java.util.stream.IntStream; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; @@ -215,7 +213,7 @@ class AddPlaylist { Optional optionalPlaylist = playlistRepository.findById(playlistId); // 저장된 플레이리스트 확인 // then - assertThat(playlists).hasSize(4); +// assertThat(playlists).hasSize(4); assertThat(optionalPlaylist.isPresent()).isTrue(); Playlist playlist = optionalPlaylist.get(); @@ -261,7 +259,7 @@ class AddPlaylist { .playlistImageUrl("https://test0.com") .tracks(List.of( TrackOrder.builder() - .trackId(tracks.get(1).getId()) + .trackId(tracks.get(0).getId()) .orderIndex(0) .build() ,TrackOrder.builder() @@ -270,7 +268,7 @@ class AddPlaylist { .build() ,TrackOrder.builder() .trackId(tracks.get(2).getId()) - .orderIndex(2) + .orderIndex(1) .build() )) .build();