diff --git a/pkg/repos/registry_test.go b/pkg/repos/registry_test.go new file mode 100644 index 0000000..9fe67b2 --- /dev/null +++ b/pkg/repos/registry_test.go @@ -0,0 +1,77 @@ +package repos + +import ( + "testing" + + "github.com/host-uk/core/pkg/io" + "github.com/stretchr/testify/assert" +) + +func TestLoadRegistry(t *testing.T) { + m := io.NewMockMedium() + yaml := ` +version: 1 +org: host-uk +base_path: /tmp/repos +repos: + core: + type: foundation + description: Core package +` + m.Write("/tmp/repos.yaml", yaml) + + reg, err := LoadRegistry(m, "/tmp/repos.yaml") + assert.NoError(t, err) + assert.NotNil(t, reg) + assert.Equal(t, "host-uk", reg.Org) + assert.Equal(t, "/tmp/repos", reg.BasePath) + assert.Equal(t, m, reg.medium) + + repo, ok := reg.Get("core") + assert.True(t, ok) + assert.Equal(t, "core", repo.Name) + assert.Equal(t, "/tmp/repos/core", repo.Path) + assert.Equal(t, reg, repo.registry) +} + +func TestRepo_Exists(t *testing.T) { + m := io.NewMockMedium() + reg := &Registry{ + medium: m, + BasePath: "/tmp/repos", + Repos: make(map[string]*Repo), + } + repo := &Repo{ + Name: "core", + Path: "/tmp/repos/core", + registry: reg, + } + + // Not exists yet + assert.False(t, repo.Exists()) + + // Create directory in mock + m.EnsureDir("/tmp/repos/core") + assert.True(t, repo.Exists()) +} + +func TestRepo_IsGitRepo(t *testing.T) { + m := io.NewMockMedium() + reg := &Registry{ + medium: m, + BasePath: "/tmp/repos", + Repos: make(map[string]*Repo), + } + repo := &Repo{ + Name: "core", + Path: "/tmp/repos/core", + registry: reg, + } + + // Not a git repo yet + assert.False(t, repo.IsGitRepo()) + + // Create .git directory in mock + m.EnsureDir("/tmp/repos/core/.git") + assert.True(t, repo.IsGitRepo()) +}