1package _select
2
3import (
4 "testing"
5
6 "github.com/MichaelMure/git-bug/cache"
7 "github.com/MichaelMure/git-bug/util/test"
8 "github.com/stretchr/testify/require"
9)
10
11func TestSelect(t *testing.T) {
12 repo := test.CreateRepo(false)
13 defer test.CleanupRepo(repo)
14
15 repoCache, err := cache.NewRepoCache(repo)
16 require.NoError(t, err)
17
18 _, _, err = ResolveBug(repoCache, []string{})
19 require.Equal(t, ErrNoValidId, err)
20
21 err = Select(repoCache, "invalid")
22 require.NoError(t, err)
23
24 // Resolve without a pattern should fail when no bug is selected
25 _, _, err = ResolveBug(repoCache, []string{})
26 require.Error(t, err)
27
28 // generate a bunch of bugs
29 for i := 0; i < 10; i++ {
30 _, err := repoCache.NewBug("title", "message")
31 require.NoError(t, err)
32 }
33
34 // and two more for testing
35 b1, err := repoCache.NewBug("title", "message")
36 require.NoError(t, err)
37 b2, err := repoCache.NewBug("title", "message")
38 require.NoError(t, err)
39
40 err = Select(repoCache, b1.Id())
41 require.NoError(t, err)
42
43 // normal select without args
44 b3, _, err := ResolveBug(repoCache, []string{})
45 require.NoError(t, err)
46 require.Equal(t, b1.Id(), b3.Id())
47
48 // override selection with same id
49 b4, _, err := ResolveBug(repoCache, []string{b1.Id()})
50 require.NoError(t, err)
51 require.Equal(t, b1.Id(), b4.Id())
52
53 // override selection with a prefix
54 b5, _, err := ResolveBug(repoCache, []string{b1.HumanId()})
55 require.NoError(t, err)
56 require.Equal(t, b1.Id(), b5.Id())
57
58 // args that shouldn't override
59 b6, _, err := ResolveBug(repoCache, []string{"arg"})
60 require.NoError(t, err)
61 require.Equal(t, b1.Id(), b6.Id())
62
63 // override with a different id
64 b7, _, err := ResolveBug(repoCache, []string{b2.Id()})
65 require.NoError(t, err)
66 require.Equal(t, b2.Id(), b7.Id())
67
68 err = Clear(repoCache)
69 require.NoError(t, err)
70
71 // Resolve without a pattern should error again after clearing the selected bug
72 _, _, err = ResolveBug(repoCache, []string{})
73 require.Error(t, err)
74}