diff --git a/pkg/dashboard/objects/releases_test.go b/pkg/dashboard/objects/releases_test.go new file mode 100644 index 00000000..29da5455 --- /dev/null +++ b/pkg/dashboard/objects/releases_test.go @@ -0,0 +1,80 @@ +package objects + +import ( + "sync" + "testing" + + "gotest.tools/v3/assert" + "helm.sh/helm/v3/pkg/action" + kubefake "helm.sh/helm/v3/pkg/kube/fake" + "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v3/pkg/storage" + "helm.sh/helm/v3/pkg/storage/driver" +) + +var ( + fakeKubeClient *kubefake.PrintingKubeClient + fakeStorage *storage.Storage +) + +func fakeHelmNSConfigGetter(ns string) (*action.Configuration, error) { + return &action.Configuration{ + KubeClient: fakeKubeClient, + Releases: fakeStorage, + }, nil +} + +func TestListReleases(t *testing.T) { + fakeStorage = storage.Init(driver.NewMemory()) + err := fakeStorage.Create(&release.Release{ + Name: "release1", + Info: &release.Info{ + Status: release.StatusDeployed, + }, + }) + assert.NilError(t, err) + err = fakeStorage.Create(&release.Release{ + Name: "release2", + Info: &release.Info{ + Status: release.StatusDeployed, + }, + }) + assert.NilError(t, err) + err = fakeStorage.Create(&release.Release{ + Name: "release3", + Info: &release.Info{ + Status: release.StatusDeployed, + }, + }) + assert.NilError(t, err) + err = fakeStorage.Create(&release.Release{ + Name: "release4", + Info: &release.Info{ + Status: release.StatusDeployed, + }, + }) + assert.NilError(t, err) + err = fakeStorage.Create(&release.Release{ + Name: "release5", + Info: &release.Info{ + Status: release.StatusDeployed, + }, + }) + assert.NilError(t, err) + + releases := &Releases{ + Namespaces: []string{"testNamespace"}, + HelmConfig: fakeHelmNSConfigGetter, + mx: sync.Mutex{}, + } + + res, err := releases.List() + assert.NilError(t, err) + + assert.Equal(t, len(res), 5) + assert.Equal(t, res[0].Orig.Name, "release1") + assert.Equal(t, res[1].Orig.Name, "release2") + assert.Equal(t, res[2].Orig.Name, "release3") + assert.Equal(t, res[3].Orig.Name, "release4") + assert.Equal(t, res[4].Orig.Name, "release5") +}