select_test.go

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