fix(admin-series): 시리즈 수정 API 추가
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user