aboutsummaryrefslogtreecommitdiffstats
path: root/commands/select/select_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/select/select_test.go')
-rw-r--r--commands/select/select_test.go109
1 files changed, 109 insertions, 0 deletions
diff --git a/commands/select/select_test.go b/commands/select/select_test.go
new file mode 100644
index 00000000..5a34d71e
--- /dev/null
+++ b/commands/select/select_test.go
@@ -0,0 +1,109 @@
+package _select
+
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+ "testing"
+
+ "github.com/MichaelMure/git-bug/cache"
+ "github.com/MichaelMure/git-bug/repository"
+)
+
+func TestSelect(t *testing.T) {
+ repo, err := cache.NewRepoCache(createRepo())
+ checkErr(t, err)
+
+ _, _, err = ResolveBug(repo, []string{})
+ if err != ErrNoValidId {
+ t.Fatal("expected no valid id error, got", err)
+ }
+
+ err = Select(repo, "invalid")
+ checkErr(t, err)
+
+ _, _, err = ResolveBug(repo, []string{})
+ if err == nil {
+ t.Fatal("expected invalid bug error")
+ }
+
+ // generate a bunch of bugs
+ for i := 0; i < 10; i++ {
+ _, err := repo.NewBug("title", "message")
+ checkErr(t, err)
+ }
+
+ // two more for testing
+ b1, err := repo.NewBug("title", "message")
+ checkErr(t, err)
+ b2, err := repo.NewBug("title", "message")
+ checkErr(t, err)
+
+ err = Select(repo, b1.Id())
+ checkErr(t, err)
+
+ // normal select without args
+ b3, _, err := ResolveBug(repo, []string{})
+ checkErr(t, err)
+ if b3.Id() != b1.Id() {
+ t.Fatal("incorrect bug returned")
+ }
+
+ // override selection with same id
+ b4, _, err := ResolveBug(repo, []string{b1.Id()})
+ checkErr(t, err)
+ if b4.Id() != b1.Id() {
+ t.Fatal("incorrect bug returned")
+ }
+
+ // override selection with a prefix
+ b5, _, err := ResolveBug(repo, []string{b1.HumanId()})
+ checkErr(t, err)
+ if b5.Id() != b1.Id() {
+ t.Fatal("incorrect bug returned")
+ }
+
+ // args that shouldn't override
+ b6, _, err := ResolveBug(repo, []string{"arg"})
+ checkErr(t, err)
+ if b6.Id() != b1.Id() {
+ t.Fatal("incorrect bug returned")
+ }
+
+ // override with a different id
+ b7, _, err := ResolveBug(repo, []string{b2.Id()})
+ checkErr(t, err)
+ if b7.Id() != b2.Id() {
+ t.Fatal("incorrect bug returned")
+ }
+
+ err = Clear(repo)
+ checkErr(t, err)
+
+ _, _, err = ResolveBug(repo, []string{})
+ if err == nil {
+ t.Fatal("expected invalid bug error")
+ }
+}
+
+func createRepo() *repository.GitRepo {
+ dir, err := ioutil.TempDir("", "")
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ fmt.Println("Creating repo:", dir)
+
+ repo, err := repository.InitGitRepo(dir)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ return repo
+}
+
+func checkErr(t testing.TB, err error) {
+ if err != nil {
+ t.Fatal(err)
+ }
+}