Introduce test.bat orchestrating Go/Vitest/Playwright phases, expand coverage across server, agent, and dashboard, and document in tests/README.md.
72 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|