fix(admin-series): 시리즈 수정 API 추가

This commit is contained in:
2025-11-12 14:58:48 +09:00
parent 3ed306ae8c
commit 4f52ec0663
5 changed files with 186 additions and 1 deletions

View File

@@ -0,0 +1,120 @@
package kr.co.vividnext.sodalive.admin.content.series
import kr.co.vividnext.sodalive.admin.content.series.genre.AdminContentSeriesGenreRepository
import kr.co.vividnext.sodalive.admin.content.series.genre.SeriesGenre
import kr.co.vividnext.sodalive.common.SodaException
import kr.co.vividnext.sodalive.creator.admin.content.series.Series
import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesPublishedDaysOfWeek
import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesState
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.mockito.Mockito
class AdminContentSeriesServiceTest {
private lateinit var seriesRepository: AdminContentSeriesRepository
private lateinit var genreRepository: AdminContentSeriesGenreRepository
private lateinit var service: AdminContentSeriesService
@BeforeEach
fun setup() {
seriesRepository = Mockito.mock(AdminContentSeriesRepository::class.java)
genreRepository = Mockito.mock(AdminContentSeriesGenreRepository::class.java)
service = AdminContentSeriesService(seriesRepository, genreRepository)
}
@Test
fun shouldModifySeriesFieldsByAdmin() {
// given
val series = Series(
title = "title",
introduction = "intro",
state = SeriesState.PROCEEDING
)
series.id = 1L
series.genre = SeriesGenre(genre = "Old", isAdult = false)
series.publishedDaysOfWeek.add(SeriesPublishedDaysOfWeek.MON)
series.isAdult = false
series.isOriginal = false
Mockito.`when`(seriesRepository.findByIdAndActiveTrue(1L)).thenReturn(series)
val newGenre = SeriesGenre(genre = "New", isAdult = false)
newGenre.id = 10L
Mockito.`when`(genreRepository.findActiveSeriesGenreById(10L)).thenReturn(newGenre)
val request = AdminModifySeriesRequest(
seriesId = 1L,
publishedDaysOfWeek = setOf(SeriesPublishedDaysOfWeek.WED),
genreId = 10L,
isOriginal = true,
isAdult = true
)
// when
service.modifySeries(request)
// then
assertEquals(setOf(SeriesPublishedDaysOfWeek.WED), series.publishedDaysOfWeek)
assertEquals(newGenre, series.genre)
assertEquals(true, series.isOriginal)
assertEquals(true, series.isAdult)
}
@Test
fun shouldThrowWhenRandomAndOtherDaysSelectedTogether() {
// given
val series = Series(
title = "title",
introduction = "intro",
state = SeriesState.PROCEEDING
)
series.id = 2L
series.genre = SeriesGenre(genre = "Old", isAdult = false)
Mockito.`when`(seriesRepository.findByIdAndActiveTrue(2L)).thenReturn(series)
val request = AdminModifySeriesRequest(
seriesId = 2L,
publishedDaysOfWeek = setOf(SeriesPublishedDaysOfWeek.RANDOM, SeriesPublishedDaysOfWeek.MON),
genreId = null,
isOriginal = null,
isAdult = null
)
// expect
assertThrows(SodaException::class.java) {
service.modifySeries(request)
}
}
@Test
fun shouldThrowWhenGenreNotFound() {
// given
val series = Series(
title = "title",
introduction = "intro",
state = SeriesState.PROCEEDING
)
series.id = 3L
series.genre = SeriesGenre(genre = "Old", isAdult = false)
Mockito.`when`(seriesRepository.findByIdAndActiveTrue(3L)).thenReturn(series)
// genre not found
Mockito.`when`(genreRepository.findActiveSeriesGenreById(999L)).thenReturn(null)
val request = AdminModifySeriesRequest(
seriesId = 3L,
publishedDaysOfWeek = null,
genreId = 999L,
isOriginal = null,
isAdult = null
)
// expect
assertThrows(SodaException::class.java) {
service.modifySeries(request)
}
}
}