internal/store/explore_test.go

e6cd75b5f28bacf51620bb531320c30fd4e66bfd
gitbay/internal/store/explore_test.go history · blame · raw

51 lines · 1222 bytes

1 symbol in this file
 1package store
 2
 3import "testing"
 4
 5func TestListPublicReposByActivity(t *testing.T) {
 6	s := open(t)
 7	if err := s.MigrateUp(); err != nil {
 8		t.Fatal(err)
 9	}
10	uid, err := s.CreateUser("cmc", true)
11	if err != nil {
12		t.Fatal(err)
13	}
14	ids := map[string]int64{}
15	for _, name := range []string{"aa", "bb", "cc", "dd", "secret"} {
16		vis := "public"
17		if name == "secret" {
18			vis = "private"
19		}
20		if ids[name], err = s.CreateRepo("user", uid, name, vis); err != nil {
21			t.Fatal(err)
22		}
23	}
24	for _, ev := range []struct{ repo, kind string }{
25		{"aa", "push"}, {"cc", "issue.created"}, {"bb", "push"}, {"aa", "build.finished"}, {"secret", "push"},
26	} {
27		if err := s.RecordEvent(ids[ev.repo], uid, ev.kind, "{}"); err != nil {
28			t.Fatal(err)
29		}
30	}
31
32	repos, err := s.ListPublicReposByActivity()
33	if err != nil {
34		t.Fatal(err)
35	}
36	var got []string
37	for _, r := range repos {
38		got = append(got, r.Name)
39	}
40	// bb was touched last; a build on aa is not activity; dd has none
41	// and comes after every repo that does.
42	want := []string{"bb", "cc", "aa", "dd"}
43	if len(got) != len(want) {
44		t.Fatalf("got %v, want %v", got, want)
45	}
46	for i := range want {
47		if got[i] != want[i] {
48			t.Fatalf("got %v, want %v", got, want)
49		}
50	}
51}