From f6c90b071ebbdbe7581d30552cbe7394aab06ba7 Mon Sep 17 00:00:00 2001 From: Maksim Pischulenok Date: Sun, 21 Dec 2025 12:59:11 +0300 Subject: [PATCH] Test TelegramHelper --- build.gradle.kts | 1 + gradle.properties | 1 + mise.toml | 4 + .../memevizor/util/TelegramHelperTest.kt | 99 +++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 gradle.properties create mode 100644 src/test/kotlin/com/pischule/memevizor/util/TelegramHelperTest.kt diff --git a/build.gradle.kts b/build.gradle.kts index b2cf9e1..8eb1f1f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -36,6 +36,7 @@ dependencies { annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") + testImplementation("io.kotest:kotest-assertions-core:6.0.7") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5ad6974 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.configuration-cache=true diff --git a/mise.toml b/mise.toml index f12a7a7..4c81fe8 100644 --- a/mise.toml +++ b/mise.toml @@ -4,3 +4,7 @@ java = "temurin-21" [tasks.fmt] description = 'Fourmat source code' run = './gradlew :spotlessApply' + +[tasks.test] +description = 'Run tests' +run = './gradlew check' diff --git a/src/test/kotlin/com/pischule/memevizor/util/TelegramHelperTest.kt b/src/test/kotlin/com/pischule/memevizor/util/TelegramHelperTest.kt new file mode 100644 index 0000000..bc5a335 --- /dev/null +++ b/src/test/kotlin/com/pischule/memevizor/util/TelegramHelperTest.kt @@ -0,0 +1,99 @@ +package com.pischule.memevizor.util + +import com.github.kotlintelegrambot.entities.Chat +import com.github.kotlintelegrambot.entities.Message +import com.github.kotlintelegrambot.entities.files.Document +import com.github.kotlintelegrambot.entities.files.PhotoSize +import com.github.kotlintelegrambot.entities.files.Video +import com.github.kotlintelegrambot.entities.files.VideoNote +import io.kotest.matchers.nulls.shouldBeNull +import io.kotest.matchers.shouldBe +import org.junit.jupiter.api.Test + +class TelegramHelperTest { + private val mockChat = Chat(id = 1L, type = "private") + + @Test + fun `getMedia should return photo from PhotoSize`() { + val message = + Message( + messageId = 1L, + chat = mockChat, + date = 123, + photo = listOf(PhotoSize("p1", "p1u", 100, 100), PhotoSize("p2", "p2u", 200, 200)), + ) + + val result = message.getMedia() + + result shouldBe MessageMedia(fileId = "p2", type = MessageMedia.Type.PHOTO) + } + + @Test + fun `getMedia should return video from Video`() { + val message = + Message( + messageId = 1L, + chat = mockChat, + date = 123, + video = Video("v1", "v1u", 100, 100, 10), + ) + + val result = message.getMedia() + + result shouldBe MessageMedia(fileId = "v1", type = MessageMedia.Type.VIDEO) + } + + @Test + fun `getMedia should return video from VideoNote`() { + val message = + Message( + messageId = 1L, + chat = mockChat, + date = 123, + videoNote = VideoNote("vn1", "vn1u", 100, 10), + ) + + val result = message.getMedia() + + result shouldBe MessageMedia(fileId = "vn1", type = MessageMedia.Type.VIDEO) + } + + @Test + fun `getMedia should return video from Document with video mimeType`() { + val message = + Message( + messageId = 1L, + chat = mockChat, + date = 123, + document = Document("d1", "d1u", mimeType = "video/mp4"), + ) + + val result = message.getMedia() + + result shouldBe MessageMedia(fileId = "d1", type = MessageMedia.Type.VIDEO) + } + + @Test + fun `getMedia should return null for Document with non-video mimeType`() { + val message = + Message( + messageId = 1L, + chat = mockChat, + date = 123, + document = Document("d1", "d1u", mimeType = "image/jpeg"), + ) + + val result = message.getMedia() + + result.shouldBeNull() + } + + @Test + fun `getMedia should return null for message with no media`() { + val message = Message(messageId = 1L, chat = mockChat, date = 123, text = "hello") + + val result = message.getMedia() + + result.shouldBeNull() + } +}