internal/store/fork_test.go
29 lines · 817 bytes
1package store
2
3import "testing"
4
5// A fork is created with its parent in the same insert; it is never a
6// plain repository for a moment between two statements (#108).
7func TestCreateForkSetsParent(t *testing.T) {
8 s := open(t)
9 if err := s.MigrateUp(); err != nil {
10 t.Fatal(err)
11 }
12 uid, _ := s.CreateUser("alice", false)
13 bob, _ := s.CreateUser("bob", false)
14 parent, err := s.CreateRepo("user", uid, "app", "public")
15 if err != nil {
16 t.Fatal(err)
17 }
18 id, err := s.CreateFork("user", bob, "app", "public", parent)
19 if err != nil {
20 t.Fatal(err)
21 }
22 r, err := s.RepoByID(id)
23 if err != nil || r.ForkOf != parent {
24 t.Fatalf("fork_of = %d, want %d (err %v)", r.ForkOf, parent, err)
25 }
26 if _, err := s.CreateFork("user", bob, "app", "public", parent); err == nil {
27 t.Fatal("duplicate fork name accepted")
28 }
29}