package com.vincent.rsf.server.ai.store.support; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; class AiRedisKeysTest { private final AiRedisKeys aiRedisKeys = new AiRedisKeys(); @Test void shouldBuildStableRuntimeAndToolKeys() { String runtimeKey = aiRedisKeys.buildRuntimeKey(1L, 2L, "home.default", 3L, 4L); String toolKeyA = aiRedisKeys.buildToolResultKey(1L, "req-1", "tool", "{\"a\":1}"); String toolKeyB = aiRedisKeys.buildToolResultKey(1L, "req-1", "tool", "{\"a\":2}"); assertEquals("AI:RUNTIME:1:2:home.default:3:4", runtimeKey); assertTrue(toolKeyA.startsWith("AI:TOOL:RESULT:1:req-1:tool:")); assertNotEquals(toolKeyA, toolKeyB); } @Test void shouldUseSentinelTokensForNullableValues() { assertEquals("LATEST", aiRedisKeys.sessionToken(null)); assertEquals("DEFAULT", aiRedisKeys.aiParamToken(null)); assertEquals("_", aiRedisKeys.safeToken(null)); } }