select_test.go

  1package _select
  2
  3import (
  4	"fmt"
  5	"io/ioutil"
  6	"log"
  7	"testing"
  8
  9	"github.com/MichaelMure/git-bug/cache"
 10	"github.com/MichaelMure/git-bug/repository"
 11)
 12
 13func TestSelect(t *testing.T) {
 14	repo, err := cache.NewRepoCache(createRepo())
 15	checkErr(t, err)
 16
 17	_, _, err = ResolveBug(repo, []string{})
 18	if err != ErrNoValidId {
 19		t.Fatal("expected no valid id error, got", err)
 20	}
 21
 22	err = Select(repo, "invalid")
 23	checkErr(t, err)
 24
 25	_, _, err = ResolveBug(repo, []string{})
 26	if err == nil {
 27		t.Fatal("expected invalid bug error")
 28	}
 29
 30	// generate a bunch of bugs
 31	for i := 0; i < 10; i++ {
 32		_, err := repo.NewBug("title", "message")
 33		checkErr(t, err)
 34	}
 35
 36	// two more for testing
 37	b1, err := repo.NewBug("title", "message")
 38	checkErr(t, err)
 39	b2, err := repo.NewBug("title", "message")
 40	checkErr(t, err)
 41
 42	err = Select(repo, b1.Id())
 43	checkErr(t, err)
 44
 45	// normal select without args
 46	b3, _, err := ResolveBug(repo, []string{})
 47	checkErr(t, err)
 48	if b3.Id() != b1.Id() {
 49		t.Fatal("incorrect bug returned")
 50	}
 51
 52	// override selection with same id
 53	b4, _, err := ResolveBug(repo, []string{b1.Id()})
 54	checkErr(t, err)
 55	if b4.Id() != b1.Id() {
 56		t.Fatal("incorrect bug returned")
 57	}
 58
 59	// override selection with a prefix
 60	b5, _, err := ResolveBug(repo, []string{b1.HumanId()})
 61	checkErr(t, err)
 62	if b5.Id() != b1.Id() {
 63		t.Fatal("incorrect bug returned")
 64	}
 65
 66	// args that shouldn't override
 67	b6, _, err := ResolveBug(repo, []string{"arg"})
 68	checkErr(t, err)
 69	if b6.Id() != b1.Id() {
 70		t.Fatal("incorrect bug returned")
 71	}
 72
 73	// override with a different id
 74	b7, _, err := ResolveBug(repo, []string{b2.Id()})
 75	checkErr(t, err)
 76	if b7.Id() != b2.Id() {
 77		t.Fatal("incorrect bug returned")
 78	}
 79
 80	err = Clear(repo)
 81	checkErr(t, err)
 82
 83	_, _, err = ResolveBug(repo, []string{})
 84	if err == nil {
 85		t.Fatal("expected invalid bug error")
 86	}
 87}
 88
 89func createRepo() *repository.GitRepo {
 90	dir, err := ioutil.TempDir("", "")
 91	if err != nil {
 92		log.Fatal(err)
 93	}
 94
 95	fmt.Println("Creating repo:", dir)
 96
 97	repo, err := repository.InitGitRepo(dir)
 98	if err != nil {
 99		log.Fatal(err)
100	}
101
102	return repo
103}
104
105func checkErr(t testing.TB, err error) {
106	if err != nil {
107		t.Fatal(err)
108	}
109}