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