Skip to content

Commit ab83957

Browse files
authored
release: 1.2.8 (#255)
2 parents 5d0c6f5 + 36bc050 commit ab83957

File tree

10 files changed

+48
-9
lines changed

10 files changed

+48
-9
lines changed

src/main/kotlin/org/gitanimals/core/clock.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ fun instant() = Instant.now(clock)
1111

1212
fun Instant.toZonedDateTime() = ZonedDateTime.ofInstant(this, clock.zone)
1313

14+
fun Instant.toZonedDateTime(zoneId: ZoneId) = ZonedDateTime.ofInstant(this, zoneId)
15+
1416
fun Instant.toKr() = ZonedDateTime.ofInstant(this, ZoneId.of("Asia/Seoul"))

src/main/kotlin/org/gitanimals/guild/app/response/GuildResponse.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ data class GuildResponse(
1515
val totalContributions: String,
1616
val members: List<Member>,
1717
val waitMembers: List<WaitMember>,
18+
val autoJoin: Boolean,
1819
@JsonFormat(
1920
shape = JsonFormat.Shape.STRING,
2021
pattern = "yyyy-MM-dd HH:mm:ss",
@@ -59,7 +60,7 @@ data class GuildResponse(
5960
leader = Leader(
6061
userId = guild.getLeaderUserId().toString(),
6162
name = guild.getLeaderName(),
62-
contributions = guild.getContributions().toString(),
63+
contributions = guild.getLeaderContributions().toString(),
6364
personaId = guild.getLeaderPersonaId().toString(),
6465
personaType = guild.getLeaderPersonaType(),
6566
),
@@ -85,6 +86,7 @@ data class GuildResponse(
8586
personaType = it.personaType,
8687
)
8788
},
89+
autoJoin = guild.isAutoJoin(),
8890
createdAt = guild.createdAt,
8991
)
9092
}

src/main/kotlin/org/gitanimals/guild/domain/Guild.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class Guild(
140140

141141
fun getLeaderName(): String = leader.name
142142

143-
fun getContributions(): Long = leader.contributions
143+
fun getLeaderContributions(): Long = leader.contributions
144144

145145
fun getGuildFarmType(): FieldType = farmType
146146

src/main/kotlin/org/gitanimals/guild/saga/UpdateGuildContributionSagaHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class UpdateGuildContributionSagaHandler(
2020

2121
guildService.updateContribution(
2222
username = userContributionUpdated.username,
23-
contributions = userContributionUpdated.contributions.toLong(),
23+
contributions = userContributionUpdated.contributions,
2424
)
2525
}
2626
}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.gitanimals.guild.saga.event
22

3+
import java.time.Instant
4+
35
data class UserContributionUpdated(
46
val username: String,
5-
val point: Long,
6-
val contributions: Int,
7+
val contributions: Long,
8+
val userContributionUpdated: Boolean,
9+
val contributionUpdatedAt: Instant,
710
)

src/main/kotlin/org/gitanimals/render/domain/User.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore
44
import jakarta.persistence.*
55
import org.gitanimals.core.*
66
import org.gitanimals.render.domain.event.PersonaDeleted
7+
import org.gitanimals.render.domain.event.UserContributionUpdated
78
import org.gitanimals.render.domain.extension.RenderFieldTypeExtension.isRenderField
89
import org.gitanimals.render.domain.listeners.DomainEventPublisher
910
import org.gitanimals.render.domain.response.PersonaResponse
@@ -103,7 +104,7 @@ class User(
103104

104105
@JsonIgnore
105106
fun isContributionUpdatedBeforeOneHour(): Boolean {
106-
val currentYear = ZonedDateTime.now(ZoneId.of("UTC")).year
107+
val currentYear = instant().toZonedDateTime(ZoneId.of("UTC")).year
107108
val currentYearContribution =
108109
contributions.firstOrNull { it.year == currentYear } ?: return true
109110

@@ -144,6 +145,13 @@ class User(
144145
currentYearContribution.lastUpdatedContribution = Instant.now()
145146
levelUpPersonas(newContribution)
146147

148+
DomainEventPublisher.publish(
149+
UserContributionUpdated(
150+
username = this.name,
151+
contributions = contributions.totalCount(),
152+
)
153+
)
154+
147155
return newContribution
148156
}
149157

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.gitanimals.render.domain.event
2+
3+
import org.gitanimals.core.instant
4+
import java.time.Instant
5+
6+
data class UserContributionUpdated(
7+
val username: String,
8+
val contributions: Long,
9+
val userContributionUpdated: Boolean = true,
10+
val contributionUpdatedAt: Instant = instant(),
11+
)

src/test/kotlin/org/gitanimals/guild/app/CreateGuildFacadeTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import io.kotest.core.annotation.DisplayName
88
import io.kotest.core.spec.style.DescribeSpec
99
import io.mockk.every
1010
import org.gitanimals.core.FieldType
11+
import org.gitanimals.core.IdGenerator
12+
import org.gitanimals.core.filter.MDCFilter.Companion.TRACE_ID
1113
import org.gitanimals.guild.app.request.CreateGuildRequest
1214
import org.gitanimals.guild.domain.GuildIcons
1315
import org.gitanimals.guild.domain.GuildRepository
@@ -16,6 +18,7 @@ import org.gitanimals.guild.supports.RedisContainer
1618
import org.gitanimals.guild.supports.GuildSagaCapture
1719
import org.gitanimals.guild.supports.MockApiConfiguration
1820
import org.rooftop.netx.meta.EnableSaga
21+
import org.slf4j.MDC
1922
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Application
2023
import org.springframework.boot.autoconfigure.domain.EntityScan
2124
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
@@ -50,6 +53,7 @@ internal class CreateGuildFacadeTest(
5053
beforeEach {
5154
guildSagaCapture.clear()
5255
guildRepository.deleteAll()
56+
MDC.put(TRACE_ID, IdGenerator.generate().toString())
5357
}
5458

5559
describe("createGuild 메소드는") {
@@ -118,7 +122,7 @@ internal class CreateGuildFacadeTest(
118122
private val poolIdentityUserResponse = IdentityApi.UserResponse(
119123
id = "1",
120124
username = "devxb",
121-
points = "29999",
125+
points = "0",
122126
profileImage = "https://gitanimals.org"
123127
)
124128

src/test/kotlin/org/gitanimals/guild/domain/GuildServiceTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.gitanimals.core.FieldType
99
import org.gitanimals.core.PersonaType
1010
import org.gitanimals.guild.domain.GuildService.Companion.loadMembers
1111
import org.gitanimals.guild.domain.GuildService.Companion.loadWaitMembers
12+
import org.gitanimals.guild.domain.extension.GuildFieldTypeExtension.isGuildField
1213
import org.gitanimals.guild.domain.request.CreateLeaderRequest
1314
import org.springframework.boot.autoconfigure.domain.EntityScan
1415
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
@@ -34,7 +35,7 @@ internal class GuildServiceTest(
3435
val guildIcon = GuildIcons.CAT.getImagePath()
3536
val title = "guildTitle"
3637
val body = "guildBody"
37-
val farmType = FieldType.LOGO_SHOWING
38+
val farmType = FieldType.entries.first { it.isGuildField() }
3839
val leaderRequest = CreateLeaderRequest(
3940
userId = 1L,
4041
name = "devxb",

src/test/kotlin/org/gitanimals/render/domain/UserTest.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import io.kotest.core.spec.style.DescribeSpec
77
import io.kotest.matchers.equals.shouldBeEqual
88
import io.kotest.matchers.nulls.shouldNotBeNull
99
import org.gitanimals.core.PersonaType
10+
import org.gitanimals.core.instant
11+
import org.gitanimals.core.toZonedDateTime
1012
import org.gitanimals.render.domain.event.PersonaDeleted
1113
import org.gitanimals.render.domain.listeners.DomainEventPublisher
1214
import org.gitanimals.render.domain.value.Contribution
@@ -79,7 +81,13 @@ internal class UserTest(
7981

8082
context("user의 contribution이 업데이트 된지 1시간이 지나지 않았을 경우,") {
8183
val user = user(
82-
contributions = mutableListOf(Contribution(2024, 0, Instant.now()))
84+
contributions = mutableListOf(
85+
Contribution(
86+
instant().toZonedDateTime().year,
87+
0,
88+
instant(),
89+
)
90+
)
8391
)
8492
it("false를 반환한다.") {
8593
user.isContributionUpdatedBeforeOneHour() shouldBeEqual false

0 commit comments

Comments
 (0)