Files
wehub-resource-sync f99010fae1
Desktop Artifacts / Desktop Build (Linux) (push) Waiting to run
Desktop Artifacts / Desktop Build (Windows) (push) Waiting to run
Desktop Artifacts / Desktop Build (Linux (arm64)) (push) Waiting to run
Desktop Artifacts (macOS) / Desktop Build (macOS (aarch64)) (push) Waiting to run
Desktop Artifacts (macOS) / Desktop Build (macOS (x86_64)) (push) Waiting to run
CI / lint (push) Failing after 1s
CI / frontend (push) Failing after 1s
CI / scripts (push) Failing after 1s
CI / Go Test (ubuntu-latest) (push) Failing after 0s
CI / frontend-node-25 (push) Failing after 1s
CI / docs (push) Failing after 0s
CI / coverage (push) Failing after 0s
CI / e2e (push) Failing after 0s
Docker / build-and-push (push) Failing after 1s
CI / integration (push) Failing after 4m43s
CI / Go Test (windows-latest) (push) Has been cancelled
CI / Desktop Unit Tests (Windows) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:30:36 +08:00

68 lines
2.4 KiB
Go

package sync
import (
"context"
"path/filepath"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.kenn.io/agentsview/internal/parser"
)
func TestSyncZCodeTranscript(t *testing.T) {
root := t.TempDir()
dbPath := writeProcessProviderZCodeDB(t, filepath.Join(root, ".zcode", "cli"))
database := openTestDB(t)
engine := NewEngine(database, EngineConfig{
AgentDirs: map[parser.AgentType][]string{
parser.AgentZCode: {filepath.Join(root, ".zcode", "cli")},
},
Machine: "devbox",
})
runSyncAndAssert(t, engine, SyncStats{TotalSessions: 1, Synced: 1, Skipped: 0})
sess, err := database.GetSession(context.Background(), "zcode:session-001")
require.NoError(t, err)
require.NotNil(t, sess)
assert.Equal(t, 2, sess.MessageCount)
assert.Equal(t, "acme_app", sess.Project)
assert.Equal(t, dbPath+"#session-001", database.GetSessionFilePath("zcode:session-001"))
_, storedMtime, ok := database.GetSessionFileInfo("zcode:session-001")
require.True(t, ok)
assert.Equal(t, engine.SourceMtime("zcode:session-001"), storedMtime)
msgs, err := database.GetMessages(context.Background(), "zcode:session-001", 0, 100, true)
require.NoError(t, err)
require.Len(t, msgs, 2)
assert.Equal(t, "Inspect the auth flow.", msgs[0].Content)
assert.Equal(t, "assistant", msgs[1].Role)
require.Len(t, msgs[1].ToolCalls, 1)
assert.Equal(t, "Read", msgs[1].ToolCalls[0].ToolName)
assert.Equal(t, "package auth", msgs[1].ToolCalls[0].ResultContent)
events, err := database.GetUsageEvents(context.Background(), "zcode:session-001")
require.NoError(t, err)
require.Len(t, events, 1)
assert.Equal(t, "claude-sonnet-4-6", events[0].Model)
assert.Equal(t, 1, events[0].InputTokens)
assert.Equal(t, 2, events[0].OutputTokens)
assert.Contains(t, events[0].DedupKey, "session:zcode:session-001")
assert.Contains(t, events[0].DedupKey, "turn=1")
assert.Contains(t, events[0].DedupKey, "model=claude-sonnet-4-6")
runSyncAndAssert(t, engine, SyncStats{TotalSessions: 0, Synced: 0, Skipped: 0})
}
func runSyncAndAssert(t *testing.T, engine *Engine, want SyncStats) SyncStats {
t.Helper()
stats := engine.SyncAll(context.Background(), nil)
diff := cmp.Diff(want, stats, cmpopts.IgnoreUnexported(SyncStats{}))
require.Empty(t, diff, "SyncAll() mismatch (-want +got):\n%s", diff)
return stats
}