import test from "node:test"
import assert from "node:assert/strict"
import { normalizeClaudeCodeInteractionsForStorage } from "../src/lib/shared/interaction-content"
import {
  extractSkillsWithVersionsFromClaudeSession,
  extractSkillsWithVersionsFromOpenClawSession,
  extractSkillsWithVersionsFromOpencodeSession,
  normalizeInteractions,
} from "../src/lib/shared/interaction-utils"
import {
  claudeExpectedSkills,
  claudeSkillMessages,
  claudeStorageExpected,
  claudeStorageInput,
  openclawExpectedSkills,
  openclawSkillMessages,
  opencodeExpectedSkills,
  opencodeSkillMessages,
} from "./fixtures/framework-skill-fixtures"

test("framework skill extraction golden: opencode", () => {
  const normalized = normalizeInteractions(opencodeSkillMessages)
  assert.deepEqual(extractSkillsWithVersionsFromOpencodeSession(normalized), opencodeExpectedSkills)
})

test("framework skill extraction golden: claude", () => {
  const normalized = normalizeInteractions(claudeSkillMessages)
  assert.deepEqual(extractSkillsWithVersionsFromClaudeSession(normalized), claudeExpectedSkills)
})

test("framework skill extraction golden: openclaw", () => {
  const normalized = normalizeInteractions(openclawSkillMessages)
  assert.deepEqual(extractSkillsWithVersionsFromOpenClawSession(normalized), openclawExpectedSkills)
})

test("framework storage normalization golden: claude", () => {
  assert.deepEqual(normalizeClaudeCodeInteractionsForStorage(claudeStorageInput), claudeStorageExpected)
})