package db import ( "testing" "time" "crypto-miner-server/internal/models" ) func TestLogCampaignHitAndPublicBuilds(t *testing.T) { d := openTestDB(t) defer d.Close() if err := d.LogCampaignHit("wave-a", "b1", "get", "10.0.0.1", "curl"); err != nil { t.Fatal(err) } hits, err := d.ListCampaignHits(10) if err != nil || len(hits) != 1 || hits[0].Campaign != "wave-a" { t.Fatalf("hits=%v err=%v", hits, err) } b1 := &models.BuildRecord{ ID: "b1", WorkerName: "w1", ServerURL: "http://x", Wallet: "w", Threads: 1, Platform: "linux", CreatedAt: time.Now(), } b2 := &models.BuildRecord{ ID: "b2", WorkerName: "w2", ServerURL: "http://x", Wallet: "w", Threads: 1, Platform: "windows", CreatedAt: time.Now().Add(time.Second), } _ = d.InsertBuild(b1) _ = d.InsertBuild(b2) _ = d.SetBuildPublic("b1", true) pub, err := d.ListPublicBuilds(false, 1) if err != nil { t.Fatal(err) } ids := map[string]bool{} for _, b := range pub { ids[b.ID] = true } if !ids["b1"] || !ids["b2"] { t.Fatalf("expected public b1 and latest b2, got %v", ids) } ok, err := d.IsBuildPubliclyDownloadable("b2", false, 1) if err != nil || !ok { t.Fatalf("latest build should be public ok=%v err=%v", ok, err) } }