Files
AetherForge/server/internal/db/agents_test.go
drjones e55f11a657 Add full test suite with unit, integration, and E2E smoke tests.
Introduce test.bat orchestrating Go/Vitest/Playwright phases, expand coverage across server, agent, and dashboard, and document in tests/README.md.
2026-05-29 10:04:52 -07:00

72 lines
1.3 KiB
Go

package db
import (
"testing"
"time"
"crypto-miner-server/internal/models"
)
func TestAgentCRUD(t *testing.T) {
d, err := New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer d.Close()
agent := &models.Agent{
ID: "agent-test-001",
Name: "lab-pc",
Wallet: "48abc",
IP: "192.168.1.50",
Version: "1.0",
Status: "online",
CPUCores: 8,
MemoryGB: 16,
LastSeen: time.Now(),
}
if err := d.UpsertAgent(agent); err != nil {
t.Fatalf("upsert: %v", err)
}
got, err := d.GetAgent(agent.ID)
if err != nil {
t.Fatalf("get: %v", err)
}
if got.Name != "lab-pc" {
t.Fatalf("name mismatch: %q", got.Name)
}
list, err := d.ListAgents()
if err != nil {
t.Fatal(err)
}
if len(list) != 1 {
t.Fatalf("expected 1 agent, got %d", len(list))
}
if err := d.UpdateAgentMeta(agent.ID, "notes here", []string{"lab", "gpu"}); err != nil {
t.Fatal(err)
}
got, _ = d.GetAgent(agent.ID)
if got.Notes != "notes here" || len(got.Tags) != 2 {
t.Fatalf("meta not saved: notes=%q tags=%v", got.Notes, got.Tags)
}
}
func TestGetFleetStatsEmpty(t *testing.T) {
d, err := New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer d.Close()
stats, err := d.GetFleetStats()
if err != nil {
t.Fatal(err)
}
if stats.TotalAgents != 0 {
t.Fatalf("expected 0 agents, got %d", stats.TotalAgents)
}
}