package com.craigvg.lichun_android.network import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test /** * Tests for WebSocketManager message handling. * * Since handleMessage is private, we test through the public API * and verify state changes on the exposed StateFlows. * For deeper message parsing tests, we test the error types directly. */ class WebSocketManagerTest { @Test fun `WebSocketError ConnectionLost has correct user message`() { val error = WebSocketError.ConnectionLost assertEquals("Lost connection to server. Trying to reconnect...", error.userMessage) assertTrue(error.isRetryable) } @Test fun `WebSocketError ServerError has correct user message`() { val error = WebSocketError.ServerError("Server is down") assertEquals("Server is down", error.userMessage) assertTrue(error.isRetryable) } @Test fun `WebSocketError InsufficientResources has correct user message`() { val error = WebSocketError.InsufficientResources("energy", 50, 10) assertEquals("Not enough energy. Need 50, have 10.", error.userMessage) assertEquals(false, error.isRetryable) } @Test fun `WebSocketError InvalidOperation is not retryable`() { val error = WebSocketError.InvalidOperation("Cannot do that") assertEquals("Cannot do that", error.userMessage) assertEquals(false, error.isRetryable) } @Test fun `WebSocketError Timeout is retryable`() { val error = WebSocketError.Timeout assertEquals("Request timed out. Please try again.", error.userMessage) assertTrue(error.isRetryable) } @Test fun `WebSocketEnvironment has correct URLs`() { assertEquals("wss://lichun.app/wss/", WebSocketEnvironment.PRODUCTION.url) assertEquals("ws://localhost:8001", WebSocketEnvironment.DEVELOPMENT.url) } }