repo_cache_test.go

  1package cache
  2
  3import (
  4	"testing"
  5
  6	"github.com/MichaelMure/git-bug/util/test"
  7	"github.com/stretchr/testify/require"
  8)
  9
 10func TestCache(t *testing.T) {
 11	repo := test.CreateRepo(false)
 12
 13	cache, err := NewRepoCache(repo)
 14	require.NoError(t, err)
 15
 16	// Create, set and get user identity
 17	iden1, err := cache.NewIdentity("René Descartes", "rene@descartes.fr")
 18	require.NoError(t, err)
 19	err = cache.SetUserIdentity(iden1)
 20	require.NoError(t, err)
 21	userIden, err := cache.GetUserIdentity()
 22	require.NoError(t, err)
 23	require.Equal(t, iden1.Id(), userIden.Id())
 24
 25	// it's possible to create two identical identities
 26	iden2, err := cache.NewIdentity("René Descartes", "rene@descartes.fr")
 27	require.NoError(t, err)
 28
 29	// Two identical identities yield a different id
 30	require.NotEqual(t, iden1.Id(), iden2.Id())
 31
 32	// There is now two identities in the cache
 33	require.Len(t, cache.AllIdentityIds(), 2)
 34	require.Len(t, cache.identitiesExcerpts, 2)
 35	require.Len(t, cache.identities, 2)
 36
 37	// Create a bug
 38	bug1, err := cache.NewBug("title", "message")
 39	require.NoError(t, err)
 40
 41	// It's possible to create two identical bugs
 42	bug2, err := cache.NewBug("title", "message")
 43	require.NoError(t, err)
 44
 45	// two identical bugs yield a different id
 46	require.NotEqual(t, bug1.Id(), bug2.Id())
 47
 48	// There is now two bugs in the cache
 49	require.Len(t, cache.AllBugsIds(), 2)
 50	require.Len(t, cache.bugExcerpts, 2)
 51	require.Len(t, cache.bugs, 2)
 52
 53	// Resolving
 54	_, err = cache.ResolveIdentity(iden1.Id())
 55	require.NoError(t, err)
 56	_, err = cache.ResolveIdentityExcerpt(iden1.Id())
 57	require.NoError(t, err)
 58	_, err = cache.ResolveIdentityPrefix(iden1.Id()[:10])
 59	require.NoError(t, err)
 60
 61	_, err = cache.ResolveBug(bug1.Id())
 62	require.NoError(t, err)
 63	_, err = cache.ResolveBugExcerpt(bug1.Id())
 64	require.NoError(t, err)
 65	_, err = cache.ResolveBugPrefix(bug1.Id()[:10])
 66	require.NoError(t, err)
 67
 68	// Querying
 69	query, err := ParseQuery("status:open author:descartes sort:edit-asc")
 70	require.NoError(t, err)
 71	require.Len(t, cache.QueryBugs(query), 2)
 72
 73	// Close
 74	require.NoError(t, cache.Close())
 75	require.Empty(t, cache.bugs)
 76	require.Empty(t, cache.bugExcerpts)
 77	require.Empty(t, cache.identities)
 78	require.Empty(t, cache.identitiesExcerpts)
 79
 80	// Reload, only excerpt are loaded
 81	require.NoError(t, cache.load())
 82	require.Empty(t, cache.bugs)
 83	require.Empty(t, cache.identities)
 84	require.Len(t, cache.bugExcerpts, 2)
 85	require.Len(t, cache.identitiesExcerpts, 2)
 86
 87	// Resolving load from the disk
 88	_, err = cache.ResolveIdentity(iden1.Id())
 89	require.NoError(t, err)
 90	_, err = cache.ResolveIdentityExcerpt(iden1.Id())
 91	require.NoError(t, err)
 92	_, err = cache.ResolveIdentityPrefix(iden1.Id()[:10])
 93	require.NoError(t, err)
 94
 95	_, err = cache.ResolveBug(bug1.Id())
 96	require.NoError(t, err)
 97	_, err = cache.ResolveBugExcerpt(bug1.Id())
 98	require.NoError(t, err)
 99	_, err = cache.ResolveBugPrefix(bug1.Id()[:10])
100	require.NoError(t, err)
101}