Add checking message ids uniqueness
This commit is contained in:
parent
04a1f5e80e
commit
2259cb3db8
6 changed files with 65 additions and 2 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -72,4 +72,4 @@ gradle-app.setting
|
|||
classes
|
||||
.DS_Store
|
||||
.idea/libraries-with-intellij-classes.xml
|
||||
dist/messages.json
|
||||
dist/v*.json
|
||||
|
|
|
@ -10,4 +10,14 @@ mainClassName = 'MainKt'
|
|||
dependencies {
|
||||
implementation project(":pojos")
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0"
|
||||
|
||||
testImplementation platform("org.junit:junit-bom:5.8.1")
|
||||
testImplementation "org.junit.jupiter:junit-jupiter"
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
testLogging {
|
||||
events "passed", "skipped", "failed"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ import kotlinx.serialization.json.Json
|
|||
import java.io.File
|
||||
|
||||
fun main() {
|
||||
checkIdUniqueness(messages)
|
||||
|
||||
val json = Json.encodeToString(messages)
|
||||
|
||||
File("../dist/v1.json").writeText(json)
|
||||
|
|
9
generator/src/main/kotlin/utils.kt
Normal file
9
generator/src/main/kotlin/utils.kt
Normal file
|
@ -0,0 +1,9 @@
|
|||
import io.github.wulkanowy.messages.pojo.Message
|
||||
|
||||
fun checkIdUniqueness(list: List<Message>) {
|
||||
val duplicates = list.groupingBy { it.id }.eachCount().filter { it.value > 1 }
|
||||
|
||||
if (duplicates.isNotEmpty()) {
|
||||
throw IllegalArgumentException("Found ${duplicates.size} duplicated id(s) in messages: $duplicates")
|
||||
}
|
||||
}
|
42
generator/src/test/kotlin/UtilsTest.kt
Normal file
42
generator/src/test/kotlin/UtilsTest.kt
Normal file
|
@ -0,0 +1,42 @@
|
|||
import io.github.wulkanowy.messages.pojo.Message
|
||||
import io.github.wulkanowy.messages.pojo.MessageType
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertDoesNotThrow
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
|
||||
class UtilsTest {
|
||||
|
||||
@Test
|
||||
fun `check message id uniqueness when really duplicates`() {
|
||||
val list = listOf(
|
||||
createMessage(1),
|
||||
createMessage(2),
|
||||
createMessage(2),
|
||||
createMessage(3),
|
||||
)
|
||||
|
||||
assertThrows<IllegalArgumentException> {
|
||||
checkIdUniqueness(list)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `check message id uniqueness when there is no duplicates`() {
|
||||
val list = listOf(
|
||||
createMessage(1),
|
||||
createMessage(2),
|
||||
createMessage(3),
|
||||
)
|
||||
|
||||
assertDoesNotThrow {
|
||||
checkIdUniqueness(list)
|
||||
}
|
||||
}
|
||||
|
||||
private fun createMessage(id: Long) = Message(
|
||||
id = id,
|
||||
title = "",
|
||||
content = "",
|
||||
type = MessageType.DASHBOARD_MESSAGE,
|
||||
)
|
||||
}
|
|
@ -4,7 +4,7 @@ import kotlinx.serialization.Serializable
|
|||
|
||||
@Serializable
|
||||
data class Message(
|
||||
val id: Int,
|
||||
val id: Long,
|
||||
val title: String,
|
||||
val content: String,
|
||||
val versionMin: Int? = null,
|
||||
|
|
Loading…
Reference in a new issue