Add tests for alias
Signed-off-by: Khwaja Faraz Ahmed <khwajafarazahmed@gmail.com>
This commit is contained in:
1 parent
a37934a892
commit
ded25c1908
1 file changed
+183
@@ -142,6 +142,136 @@ func TestGetMetadata_Run_WithDependencies(t *testing.T) {
|
||||
assert.Equal(t, "redis", result.Dependencies[1].Name)
|
||||
}
|
||||
|
||||
func TestGetMetadata_Run_WithDependenciesAliases(t *testing.T) {
|
||||
cfg := actionConfigFixture(t)
|
||||
client := NewGetMetadata(cfg)
|
||||
|
||||
releaseName := "test-release"
|
||||
deployedTime := helmtime.Now()
|
||||
|
||||
dependencies := []*chart.Dependency{
|
||||
{
|
||||
Name: "mysql",
|
||||
Version: "8.0.25",
|
||||
Repository: "https://charts.bitnami.com/bitnami",
|
||||
Alias: "database",
|
||||
},
|
||||
{
|
||||
Name: "redis",
|
||||
Version: "6.2.4",
|
||||
Repository: "https://charts.bitnami.com/bitnami",
|
||||
Alias: "cache",
|
||||
},
|
||||
}
|
||||
|
||||
rel := &release.Release{
|
||||
Name: releaseName,
|
||||
Info: &release.Info{
|
||||
Status: release.StatusDeployed,
|
||||
LastDeployed: deployedTime,
|
||||
},
|
||||
Chart: &chart.Chart{
|
||||
Metadata: &chart.Metadata{
|
||||
Name: "test-chart",
|
||||
Version: "1.0.0",
|
||||
AppVersion: "v1.2.3",
|
||||
Dependencies: dependencies,
|
||||
},
|
||||
},
|
||||
Version: 1,
|
||||
Namespace: "default",
|
||||
}
|
||||
|
||||
cfg.Releases.Create(rel)
|
||||
|
||||
result, err := client.Run(releaseName)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, releaseName, result.Name)
|
||||
assert.Equal(t, "test-chart", result.Chart)
|
||||
assert.Equal(t, "1.0.0", result.Version)
|
||||
assert.Equal(t, dependencies, result.Dependencies)
|
||||
assert.Len(t, result.Dependencies, 2)
|
||||
assert.Equal(t, "mysql", result.Dependencies[0].Name)
|
||||
assert.Equal(t, "database", result.Dependencies[0].Alias)
|
||||
assert.Equal(t, "redis", result.Dependencies[1].Name)
|
||||
assert.Equal(t, "cache", result.Dependencies[1].Alias)
|
||||
}
|
||||
|
||||
func TestGetMetadata_Run_WithMixedDependencies(t *testing.T) {
|
||||
cfg := actionConfigFixture(t)
|
||||
client := NewGetMetadata(cfg)
|
||||
|
||||
releaseName := "test-release"
|
||||
deployedTime := helmtime.Now()
|
||||
|
||||
dependencies := []*chart.Dependency{
|
||||
{
|
||||
Name: "mysql",
|
||||
Version: "8.0.25",
|
||||
Repository: "https://charts.bitnami.com/bitnami",
|
||||
Alias: "database",
|
||||
},
|
||||
{
|
||||
Name: "nginx",
|
||||
Version: "1.20.0",
|
||||
Repository: "https://charts.bitnami.com/bitnami",
|
||||
},
|
||||
{
|
||||
Name: "redis",
|
||||
Version: "6.2.4",
|
||||
Repository: "https://charts.bitnami.com/bitnami",
|
||||
Alias: "cache",
|
||||
},
|
||||
{
|
||||
Name: "postgresql",
|
||||
Version: "11.0.0",
|
||||
Repository: "https://charts.bitnami.com/bitnami",
|
||||
},
|
||||
}
|
||||
|
||||
rel := &release.Release{
|
||||
Name: releaseName,
|
||||
Info: &release.Info{
|
||||
Status: release.StatusDeployed,
|
||||
LastDeployed: deployedTime,
|
||||
},
|
||||
Chart: &chart.Chart{
|
||||
Metadata: &chart.Metadata{
|
||||
Name: "test-chart",
|
||||
Version: "1.0.0",
|
||||
AppVersion: "v1.2.3",
|
||||
Dependencies: dependencies,
|
||||
},
|
||||
},
|
||||
Version: 1,
|
||||
Namespace: "default",
|
||||
}
|
||||
|
||||
cfg.Releases.Create(rel)
|
||||
|
||||
result, err := client.Run(releaseName)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, releaseName, result.Name)
|
||||
assert.Equal(t, "test-chart", result.Chart)
|
||||
assert.Equal(t, "1.0.0", result.Version)
|
||||
assert.Equal(t, dependencies, result.Dependencies)
|
||||
assert.Len(t, result.Dependencies, 4)
|
||||
|
||||
// Verify dependencies with aliases
|
||||
assert.Equal(t, "mysql", result.Dependencies[0].Name)
|
||||
assert.Equal(t, "database", result.Dependencies[0].Alias)
|
||||
assert.Equal(t, "redis", result.Dependencies[2].Name)
|
||||
assert.Equal(t, "cache", result.Dependencies[2].Alias)
|
||||
|
||||
// Verify dependencies without aliases
|
||||
assert.Equal(t, "nginx", result.Dependencies[1].Name)
|
||||
assert.Equal(t, "", result.Dependencies[1].Alias)
|
||||
assert.Equal(t, "postgresql", result.Dependencies[3].Name)
|
||||
assert.Equal(t, "", result.Dependencies[3].Alias)
|
||||
}
|
||||
|
||||
func TestGetMetadata_Run_WithAnnotations(t *testing.T) {
|
||||
cfg := actionConfigFixture(t)
|
||||
client := NewGetMetadata(cfg)
|
||||
@@ -434,6 +564,59 @@ func TestMetadata_FormattedDepNames_WithComplexDependencies(t *testing.T) {
|
||||
assert.Equal(t, "apache,mysql,zookeeper", result)
|
||||
}
|
||||
|
||||
func TestMetadata_FormattedDepNames_WithAliases(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
dependencies []*chart.Dependency
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "dependencies with aliases",
|
||||
dependencies: []*chart.Dependency{
|
||||
{Name: "mysql", Alias: "database"},
|
||||
{Name: "redis", Alias: "cache"},
|
||||
},
|
||||
expected: "mysql,redis",
|
||||
},
|
||||
{
|
||||
name: "mixed dependencies with and without aliases",
|
||||
dependencies: []*chart.Dependency{
|
||||
{Name: "mysql", Alias: "database"},
|
||||
{Name: "nginx"},
|
||||
{Name: "redis", Alias: "cache"},
|
||||
},
|
||||
expected: "mysql,nginx,redis",
|
||||
},
|
||||
{
|
||||
name: "empty alias should use name",
|
||||
dependencies: []*chart.Dependency{
|
||||
{Name: "mysql", Alias: ""},
|
||||
{Name: "redis", Alias: "cache"},
|
||||
},
|
||||
expected: "mysql,redis",
|
||||
},
|
||||
{
|
||||
name: "sorted by name not alias",
|
||||
dependencies: []*chart.Dependency{
|
||||
{Name: "zookeeper", Alias: "a-service"},
|
||||
{Name: "apache", Alias: "z-service"},
|
||||
},
|
||||
expected: "apache,zookeeper",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
metadata := &Metadata{
|
||||
Dependencies: tc.dependencies,
|
||||
}
|
||||
|
||||
result := metadata.FormattedDepNames()
|
||||
assert.Equal(t, tc.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetMetadata_Labels(t *testing.T) {
|
||||
rel := releaseStub()
|
||||
rel.Info.Status = release.StatusDeployed
|
||||
|
||||
Reference in new issue
Block a user