internal/store/explore_test.go
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}