select_test.go

 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}