package main import ( "context" "database/sql" "testing" _ "github.com/mattn/go-sqlite3" ) func setupTestDB(t *testing.T) *sql.DB { db, err := sql.Open("sqlite3", ":memory:") if err != nil { t.Fatalf("failed to open database: %v", err) } _, err = db.Exec(` CREATE TABLE users ( id TEXT PRIMARY KEY, name TEXT, email TEXT ); INSERT INTO users (id, name, email) VALUES ('1', 'Alice', 'alice@example.com'); `) if err != nil { t.Fatalf("failed to setup test data: %v", err) } return db } func TestGetUserSafe(t *testing.T) { db := setupTestDB(t) defer db.Close() server := &userServer{db: db} user, err := server.GetUserSafe(context.Background(), "1") if err != nil { t.Fatalf("unexpected error: %v", err) } if user.Name != "Alice" { t.Errorf("expected Alice, got %s", user.Name) } } func TestGetUserNotFound(t *testing.T) { db := setupTestDB(t) defer db.Close() server := &userServer{db: db} _, err := server.GetUserSafe(context.Background(), "999") if err == nil { t.Error("expected error for non-existent user") } }