package oltp
import (
"path/filepath"
"testing"
)
func TestRepoAboutRoundTrip(t *testing.T) {
db := testDB(t)
if err := db.AddRepo("proj", t.TempDir(), "a project", Public); err != nil {
t.Fatal(err)
}
if err := db.SetRepoAbout("proj", "https://proj.example", "forge zit go"); err != nil {
t.Fatal(err)
}
r, ok, err := db.RepoByName("proj")
if err != nil || !ok {
t.Fatalf("RepoByName: ok=%v err=%v", ok, err)
}
if r.Homepage != "https://proj.example" || r.Topics != "forge zit go" {
t.Fatalf("about not stored: %+v", r)
}
rows, err := db.Repos()
if err != nil || len(rows) != 1 {
t.Fatalf("Repos: %v %v", rows, err)
}
if rows[0].Homepage != "https://proj.example" || rows[0].Topics != "forge zit go" {
t.Fatalf("Repos misses about: %+v", rows[0])
}
}
// Chat is on for every repository until a maintainer turns it off, and
// the setting survives a round trip.
func TestRepoChatSetting(t *testing.T) {
db, err := Open(filepath.Join(t.TempDir(), "o.db"))
if err != nil {
t.Fatal(err)
}
defer db.Close()
if err := db.AddRepo("alpha", t.TempDir(), "", "public"); err != nil {
t.Fatal(err)
}
r, ok, _ := db.RepoByName("alpha")
if !ok || !r.Chat {
t.Fatalf("a new repository has chat off: %+v ok=%v", r, ok)
}
if err := db.SetRepoChat("alpha", false); err != nil {
t.Fatal(err)
}
if r, _, _ = db.RepoByName("alpha"); r.Chat {
t.Errorf("chat still on after turning it off")
}
rows, _ := db.Repos()
if len(rows) != 1 || rows[0].Chat {
t.Errorf("the listing disagrees: %+v", rows)
}
}