package com.crm.chat.ui.chat

import com.crm.chat.data.model.ChatMessage
import com.crm.chat.data.model.ChatMessageReaction
import com.crm.chat.data.model.ChatUserItem
import com.crm.chat.ui.chat.MessageAdapter
import org.junit.Test
import org.junit.Assert.*

class ReactionTest {

    @Test
    fun testDialogClosureOnEmojiClick() {
        // Тест для проверки, что диалог закрывается при нажатии на эмодзи
        // В реальной среде это сложно протестировать без Android Instrumentation
        // Но мы можем проверить логику создания диалога
        
        val allowedEmojis = listOf("👍", "👎", "❤️", "🔥", "👏", "😀", "🥰", "🤣")
        assertEquals(8, allowedEmojis.size)
        assertTrue(allowedEmojis.contains("👍"))
        assertTrue(allowedEmojis.contains("❤️"))
    }

    @Test
    fun testReactionStateUpdate() {
        // Тест для проверки состояний реакций
        val loadingState = ReactionState.Loading
        val successState = ReactionState.Success(ChatMessage(id = 1, text = "Test", chatUserId = 123, createdAt = "2023-01-01T00:00:00"))
        val errorState = ReactionState.Error("Test error")

        assertTrue(loadingState is ReactionState.Loading)
        assertTrue(successState is ReactionState.Success)
        assertTrue(errorState is ReactionState.Error)
    }

    @Test
    fun testMessageAdapterReactions() {
        // Тест для проверки отображения реакций в адаптере
        val reactions = listOf(
            ChatMessageReaction(id = 1, reaction = "👍", chatUserId = 123),
            ChatMessageReaction(id = 2, reaction = "👍", chatUserId = 456),
            ChatMessageReaction(id = 3, reaction = "❤️", chatUserId = 789)
        )

        // Проверяем группировку реакций
        val reactionGroups = reactions.groupBy { it.reaction }
        assertEquals(2, reactionGroups.size) // Должно быть 2 группы: "👍" и "❤️"
        assertEquals(2, reactionGroups["👍"]?.size) // Должно быть 2 реакции "👍"
        assertEquals(1, reactionGroups["❤️"]?.size) // Должно быть 1 реакция "❤️"
    }
}
