Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query
import team.darkmoderap.aikon.domain.avatar.entity.AvatarEntity

interface AvatarRepository : JpaRepository<AvatarEntity, Long> {
fun findAllByOrderByIdAsc(): List<AvatarEntity>
fun findAllByOrderByIdAsc(): List<AvatarSummaryProjection>

fun findByPassUrl(passUrl: String): AvatarEntity?

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package team.darkmoderap.aikon.domain.avatar.repository

import team.darkmoderap.aikon.domain.avatar.entity.enum.AgeRange
import team.darkmoderap.aikon.domain.avatar.entity.enum.Gender
import team.darkmoderap.aikon.domain.avatar.entity.enum.GenerationStatus
import team.darkmoderap.aikon.domain.avatar.entity.enum.Style
import java.time.Instant

interface AvatarSummaryProjection {
val id: Long
val nickname: String
val style: Style
val gender: Gender
val ageRange: AgeRange
val generationStatus: GenerationStatus
val imageUrl: String?
val passUrl: String?
val createdAt: Instant
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ import org.springframework.transaction.event.TransactionalEventListener
import org.springframework.transaction.support.TransactionTemplate
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter
import team.darkmoderap.aikon.domain.avatar.dto.AvatarChangeResDto
import team.darkmoderap.aikon.domain.avatar.entity.AvatarEntity
import team.darkmoderap.aikon.domain.avatar.event.AvatarListChangedEvent
import team.darkmoderap.aikon.domain.avatar.event.AvatarSseSubscribedEvent
import team.darkmoderap.aikon.domain.avatar.repository.AvatarRepository
import team.darkmoderap.aikon.domain.avatar.repository.AvatarSummaryProjection
import team.darkmoderap.aikon.global.common.error.AikonException
import team.darkmoderap.aikon.global.common.error.ErrorCode
import java.util.concurrent.CopyOnWriteArrayList
Expand Down Expand Up @@ -127,7 +127,7 @@ class SubscribeAvatarChangesServiceImpl(
}
}

private fun AvatarEntity.toChangeResDto(): AvatarChangeResDto =
private fun AvatarSummaryProjection.toChangeResDto(): AvatarChangeResDto =
AvatarChangeResDto(
id = id,
nickname = nickname,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@ import org.springframework.transaction.PlatformTransactionManager
import org.springframework.transaction.TransactionDefinition
import org.springframework.transaction.TransactionStatus
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter
import team.darkmoderap.aikon.domain.avatar.entity.AvatarEntity
import team.darkmoderap.aikon.domain.avatar.entity.enum.AgeRange
import team.darkmoderap.aikon.domain.avatar.entity.enum.Gender
import team.darkmoderap.aikon.domain.avatar.entity.enum.GenerationStatus
import team.darkmoderap.aikon.domain.avatar.entity.enum.Style
import team.darkmoderap.aikon.domain.avatar.event.AvatarListChangedEvent
import team.darkmoderap.aikon.domain.avatar.event.AvatarSseSubscribedEvent
import team.darkmoderap.aikon.domain.avatar.repository.AvatarRepository
import team.darkmoderap.aikon.domain.avatar.repository.AvatarSummaryProjection
import team.darkmoderap.aikon.global.common.error.AikonException
import java.time.Instant

@ExtendWith(MockitoExtension::class)
class SubscribeAvatarChangesServiceImplTest {
Expand Down Expand Up @@ -94,7 +95,7 @@ class SubscribeAvatarChangesServiceImplTest {
fun `finds latest avatar list when event is received`() {
// Given
given(transactionManager.getTransaction(any(TransactionDefinition::class.java))).willReturn(transactionStatus)
given(avatarRepository.findAllByOrderByIdAsc()).willReturn(listOf(avatar()))
given(avatarRepository.findAllByOrderByIdAsc()).willReturn(listOf(avatarSummaryProjection()))
subscribeAvatarChangesService.execute()

// When
Expand All @@ -121,14 +122,17 @@ class SubscribeAvatarChangesServiceImplTest {
}

companion object {
private fun avatar(): AvatarEntity =
AvatarEntity(
nickname = "새아바타",
gender = Gender.FEMALE,
style = Style.GHIBLI,
ageRange = AgeRange.AGE_20_PLUS,
generationStatus = GenerationStatus.WAITING,
passUrl = "Aikon500",
)
private fun avatarSummaryProjection(): AvatarSummaryProjection =
object : AvatarSummaryProjection {
override val id: Long = 1L
override val nickname: String = "새아바타"
override val style: Style = Style.GHIBLI
override val gender: Gender = Gender.FEMALE
override val ageRange: AgeRange = AgeRange.AGE_20_PLUS
override val generationStatus: GenerationStatus = GenerationStatus.WAITING
override val imageUrl: String? = null
override val passUrl: String? = "Aikon500"
override val createdAt: Instant = Instant.now()
}
}
}
Loading