Skip to content
quarry Artifact [4463684919]
Login

Artifact [4463684919]

Artifact 4463684919924d4b07f833aa5eb646d38b7cba49fdd337b48afb432e63f0f029:


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)
	}
}