test #426

Merged
klaus merged 415 commits from test into main 2026-06-27 00:35:30 +00:00
5 changed files with 29 additions and 0 deletions
Showing only changes of commit bfbb5e6fd7 - Show all commits

View File

@@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence
import kr.co.vividnext.sodalive.common.BaseEntity import kr.co.vividnext.sodalive.common.BaseEntity
import kr.co.vividnext.sodalive.v2.ranking.domain.CreatorRankingType
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger
import java.time.LocalDateTime import java.time.LocalDateTime
@@ -13,12 +14,19 @@ import javax.persistence.Table
@Entity @Entity
@Table(name = "creator_ranking_snapshot_job") @Table(name = "creator_ranking_snapshot_job")
class CreatorRankingSnapshotJob( class CreatorRankingSnapshotJob(
@Enumerated(EnumType.STRING)
@Column(name = "ranking_type", nullable = false, length = 30)
val rankingType: CreatorRankingType,
@Column(name = "aggregation_start_at_utc", nullable = false) @Column(name = "aggregation_start_at_utc", nullable = false)
val aggregationStartAtUtc: LocalDateTime, val aggregationStartAtUtc: LocalDateTime,
@Column(name = "aggregation_end_at_utc", nullable = false) @Column(name = "aggregation_end_at_utc", nullable = false)
val aggregationEndAtUtc: LocalDateTime, val aggregationEndAtUtc: LocalDateTime,
@Column(name = "visible_from_at", nullable = false)
val visibleFromAtUtc: LocalDateTime,
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@Column(name = "trigger_type", nullable = false, length = 20) @Column(name = "trigger_type", nullable = false, length = 20)
val trigger: CreatorRankingSnapshotJobTrigger, val trigger: CreatorRankingSnapshotJobTrigger,

View File

@@ -73,8 +73,10 @@ class DefaultCreatorRankingSnapshotJobRepository(
private fun CreatorRankingSnapshotJobRecord.toEntity(): CreatorRankingSnapshotJob { private fun CreatorRankingSnapshotJobRecord.toEntity(): CreatorRankingSnapshotJob {
return CreatorRankingSnapshotJob( return CreatorRankingSnapshotJob(
rankingType = rankingType,
aggregationStartAtUtc = aggregationStartAtUtc, aggregationStartAtUtc = aggregationStartAtUtc,
aggregationEndAtUtc = aggregationEndAtUtc, aggregationEndAtUtc = aggregationEndAtUtc,
visibleFromAtUtc = visibleFromAtUtc,
trigger = trigger, trigger = trigger,
status = status, status = status,
lastError = lastError, lastError = lastError,
@@ -86,8 +88,10 @@ class DefaultCreatorRankingSnapshotJobRepository(
private fun CreatorRankingSnapshotJob.toRecord(): CreatorRankingSnapshotJobRecord { private fun CreatorRankingSnapshotJob.toRecord(): CreatorRankingSnapshotJobRecord {
return CreatorRankingSnapshotJobRecord( return CreatorRankingSnapshotJobRecord(
id = id, id = id,
rankingType = rankingType,
aggregationStartAtUtc = aggregationStartAtUtc, aggregationStartAtUtc = aggregationStartAtUtc,
aggregationEndAtUtc = aggregationEndAtUtc, aggregationEndAtUtc = aggregationEndAtUtc,
visibleFromAtUtc = visibleFromAtUtc,
trigger = trigger, trigger = trigger,
status = status, status = status,
lastError = lastError, lastError = lastError,

View File

@@ -1,5 +1,6 @@
package kr.co.vividnext.sodalive.v2.ranking.port.out package kr.co.vividnext.sodalive.v2.ranking.port.out
import kr.co.vividnext.sodalive.v2.ranking.domain.CreatorRankingType
import java.time.LocalDateTime import java.time.LocalDateTime
interface CreatorRankingSnapshotJobPort { interface CreatorRankingSnapshotJobPort {
@@ -36,8 +37,10 @@ enum class CreatorRankingSnapshotJobTrigger {
data class CreatorRankingSnapshotJobRecord( data class CreatorRankingSnapshotJobRecord(
val id: Long? = null, val id: Long? = null,
val rankingType: CreatorRankingType,
val aggregationStartAtUtc: LocalDateTime, val aggregationStartAtUtc: LocalDateTime,
val aggregationEndAtUtc: LocalDateTime, val aggregationEndAtUtc: LocalDateTime,
val visibleFromAtUtc: LocalDateTime,
val trigger: CreatorRankingSnapshotJobTrigger, val trigger: CreatorRankingSnapshotJobTrigger,
val status: CreatorRankingSnapshotJobStatus, val status: CreatorRankingSnapshotJobStatus,
val lastError: String?, val lastError: String?,

View File

@@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.v2.admin.ranking.creator
import kr.co.vividnext.sodalive.common.CountryContext import kr.co.vividnext.sodalive.common.CountryContext
import kr.co.vividnext.sodalive.i18n.LangContext import kr.co.vividnext.sodalive.i18n.LangContext
import kr.co.vividnext.sodalive.i18n.SodaMessageSource import kr.co.vividnext.sodalive.i18n.SodaMessageSource
import kr.co.vividnext.sodalive.v2.ranking.domain.CreatorRankingType
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobRecord import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobRecord
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger
@@ -160,8 +161,10 @@ class AdminCreatorRankingSnapshotJobControllerTest @Autowired constructor(
private fun manualJob(status: CreatorRankingSnapshotJobStatus): CreatorRankingSnapshotJobRecord { private fun manualJob(status: CreatorRankingSnapshotJobStatus): CreatorRankingSnapshotJobRecord {
return CreatorRankingSnapshotJobRecord( return CreatorRankingSnapshotJobRecord(
id = 1L, id = 1L,
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = LocalDateTime.of(2026, 5, 31, 15, 0), aggregationStartAtUtc = LocalDateTime.of(2026, 5, 31, 15, 0),
aggregationEndAtUtc = LocalDateTime.of(2026, 6, 7, 15, 0), aggregationEndAtUtc = LocalDateTime.of(2026, 6, 7, 15, 0),
visibleFromAtUtc = LocalDateTime.of(2026, 6, 8, 0, 0),
trigger = CreatorRankingSnapshotJobTrigger.MANUAL, trigger = CreatorRankingSnapshotJobTrigger.MANUAL,
status = status, status = status,
lastError = if (status == CreatorRankingSnapshotJobStatus.FAILED) "aggregate failed" else null, lastError = if (status == CreatorRankingSnapshotJobStatus.FAILED) "aggregate failed" else null,

View File

@@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence
import kr.co.vividnext.sodalive.configs.QueryDslConfig import kr.co.vividnext.sodalive.configs.QueryDslConfig
import kr.co.vividnext.sodalive.v2.ranking.domain.CreatorRankingType
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobRecord import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobRecord
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger
@@ -32,8 +33,10 @@ class DefaultCreatorRankingSnapshotJobRepositoryTest @Autowired constructor(
val saved = adapter.save( val saved = adapter.save(
CreatorRankingSnapshotJobRecord( CreatorRankingSnapshotJobRecord(
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = startAt, aggregationStartAtUtc = startAt,
aggregationEndAtUtc = endAt, aggregationEndAtUtc = endAt,
visibleFromAtUtc = endAt.plusHours(9),
trigger = CreatorRankingSnapshotJobTrigger.SCHEDULED, trigger = CreatorRankingSnapshotJobTrigger.SCHEDULED,
status = CreatorRankingSnapshotJobStatus.PENDING, status = CreatorRankingSnapshotJobStatus.PENDING,
lastError = null, lastError = null,
@@ -54,8 +57,10 @@ class DefaultCreatorRankingSnapshotJobRepositoryTest @Autowired constructor(
adapter.markDone(savedId, processedAt) adapter.markDone(savedId, processedAt)
val failed = adapter.save( val failed = adapter.save(
CreatorRankingSnapshotJobRecord( CreatorRankingSnapshotJobRecord(
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = startAt.minusWeeks(1), aggregationStartAtUtc = startAt.minusWeeks(1),
aggregationEndAtUtc = endAt.minusWeeks(1), aggregationEndAtUtc = endAt.minusWeeks(1),
visibleFromAtUtc = endAt.minusWeeks(1).plusHours(9),
trigger = CreatorRankingSnapshotJobTrigger.SCHEDULED, trigger = CreatorRankingSnapshotJobTrigger.SCHEDULED,
status = CreatorRankingSnapshotJobStatus.FAILED, status = CreatorRankingSnapshotJobStatus.FAILED,
lastError = "aggregate failed", lastError = "aggregate failed",
@@ -73,6 +78,8 @@ class DefaultCreatorRankingSnapshotJobRepositoryTest @Autowired constructor(
assertEquals(1, jobs.size) assertEquals(1, jobs.size)
assertEquals(CreatorRankingSnapshotJobTrigger.SCHEDULED, jobs.single().trigger) assertEquals(CreatorRankingSnapshotJobTrigger.SCHEDULED, jobs.single().trigger)
assertEquals(CreatorRankingType.WEEKLY, jobs.single().rankingType)
assertEquals(endAt.plusHours(9), jobs.single().visibleFromAtUtc)
assertEquals(CreatorRankingSnapshotJobStatus.DONE, jobs.single().status) assertEquals(CreatorRankingSnapshotJobStatus.DONE, jobs.single().status)
assertEquals(processingStartedAt, jobs.single().processingStartedAt) assertEquals(processingStartedAt, jobs.single().processingStartedAt)
assertEquals(processedAt, jobs.single().processedAt) assertEquals(processedAt, jobs.single().processedAt)
@@ -86,8 +93,10 @@ class DefaultCreatorRankingSnapshotJobRepositoryTest @Autowired constructor(
fun shouldMarkFailedSnapshotJobPendingForRetry() { fun shouldMarkFailedSnapshotJobPendingForRetry() {
val saved = adapter.save( val saved = adapter.save(
CreatorRankingSnapshotJobRecord( CreatorRankingSnapshotJobRecord(
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = LocalDateTime.of(2026, 5, 31, 15, 0), aggregationStartAtUtc = LocalDateTime.of(2026, 5, 31, 15, 0),
aggregationEndAtUtc = LocalDateTime.of(2026, 6, 7, 15, 0), aggregationEndAtUtc = LocalDateTime.of(2026, 6, 7, 15, 0),
visibleFromAtUtc = LocalDateTime.of(2026, 6, 8, 0, 0),
trigger = CreatorRankingSnapshotJobTrigger.MANUAL, trigger = CreatorRankingSnapshotJobTrigger.MANUAL,
status = CreatorRankingSnapshotJobStatus.FAILED, status = CreatorRankingSnapshotJobStatus.FAILED,
lastError = "aggregate failed", lastError = "aggregate failed",
@@ -111,8 +120,10 @@ class DefaultCreatorRankingSnapshotJobRepositoryTest @Autowired constructor(
fun shouldNotMarkNonFailedSnapshotJobPendingForRetry() { fun shouldNotMarkNonFailedSnapshotJobPendingForRetry() {
val saved = adapter.save( val saved = adapter.save(
CreatorRankingSnapshotJobRecord( CreatorRankingSnapshotJobRecord(
rankingType = CreatorRankingType.WEEKLY,
aggregationStartAtUtc = LocalDateTime.of(2026, 5, 31, 15, 0), aggregationStartAtUtc = LocalDateTime.of(2026, 5, 31, 15, 0),
aggregationEndAtUtc = LocalDateTime.of(2026, 6, 7, 15, 0), aggregationEndAtUtc = LocalDateTime.of(2026, 6, 7, 15, 0),
visibleFromAtUtc = LocalDateTime.of(2026, 6, 8, 0, 0),
trigger = CreatorRankingSnapshotJobTrigger.MANUAL, trigger = CreatorRankingSnapshotJobTrigger.MANUAL,
status = CreatorRankingSnapshotJobStatus.DONE, status = CreatorRankingSnapshotJobStatus.DONE,
lastError = null, lastError = null,