internal/store/reviewcarry_test.go

v1.19.0
gitbay/internal/store/reviewcarry_test.go history · blame · raw

58 lines · 1666 bytes

 1package store
 2
 3import "testing"
 4
 5// UpdateMRHead with sameDiff moves the fresh reviews of the old head to
 6// the new one and leaves already-stale reviews stale (#198).
 7func TestUpdateMRHeadSameDiffKeepsFreshReviews(t *testing.T) {
 8	s := open(t)
 9	if err := s.MigrateUp(); err != nil {
10		t.Fatal(err)
11	}
12	alice, _ := s.CreateUser("alice", false)
13	bob, _ := s.CreateUser("bob", false)
14	carol, _ := s.CreateUser("carol", false)
15	repo, _ := s.CreateRepo("user", alice, "app", "public")
16	id, err := s.CreateMR(repo, alice, repo, "feat", "main", "t", "", "aaa", "md", false)
17	if err != nil {
18		t.Fatal(err)
19	}
20	// bob reviewed an earlier head and is stale; carol reviewed the
21	// current one.
22	if err := s.AddMRReview(id, bob, "approve", "000"); err != nil {
23		t.Fatal(err)
24	}
25	if err := s.UpdateMRHead(id, "aaa", "", false); err != nil {
26		t.Fatal(err)
27	}
28	if err := s.AddMRReview(id, carol, "approve", "aaa"); err != nil {
29		t.Fatal(err)
30	}
31	if err := s.UpdateMRHead(id, "bbb", "", true); err != nil {
32		t.Fatal(err)
33	}
34	reviews, err := s.ListMRReviews(id)
35	if err != nil {
36		t.Fatal(err)
37	}
38	got := map[string]MRReview{}
39	for _, r := range reviews {
40		got[r.Reviewer] = r
41	}
42	if r := got["carol"]; r.Stale || r.HeadSHA != "bbb" {
43		t.Errorf("fresh review did not follow the same diff: %+v", r)
44	}
45	if r := got["bob"]; !r.Stale || r.HeadSHA != "000" {
46		t.Errorf("stale review changed: %+v", r)
47	}
48	// A different diff stales everything, as before.
49	if err := s.UpdateMRHead(id, "ccc", "", false); err != nil {
50		t.Fatal(err)
51	}
52	reviews, _ = s.ListMRReviews(id)
53	for _, r := range reviews {
54		if !r.Stale {
55			t.Errorf("review survived a changed diff: %+v", r)
56		}
57	}
58}