diff --git a/cli/recipe/sync.go b/cli/recipe/sync.go index 5e4747437..5e303493a 100644 --- a/cli/recipe/sync.go +++ b/cli/recipe/sync.go @@ -121,20 +121,15 @@ likely to change. log.Fatal(err) } - versions, err := recipePkg.GetRecipeCatalogueVersions(recipe.Name, catl) - if err != nil { - log.Fatal(err) - } - changesTable, err := formatter.CreateTable() if err != nil { log.Fatal(err) } latestRelease := tags[len(tags)-1] + latestRecipeVersion := getLatestVersion(recipe, catl) changesTable.Headers(i18n.G("SERVICE"), latestRelease, i18n.G("PROPOSED CHANGES")) - latestRecipeVersion := versions[len(versions)-1] allRecipeVersions := catl[recipe.Name].Versions for _, recipeVersion := range allRecipeVersions { if serviceVersions, ok := recipeVersion[latestRecipeVersion]; ok { @@ -298,3 +293,15 @@ func init() { i18n.G("increase the patch part of the version"), ) } + +func getLatestVersion(recipe recipePkg.Recipe, catl recipePkg.RecipeCatalogue) string { + versions, err := recipePkg.GetRecipeCatalogueVersions(recipe.Name, catl) + if err != nil { + log.Fatal(err) + } + latestRecipeVersion := "0.0.0" + if len(versions) > 0 { + latestRecipeVersion = versions[len(versions)-1] + } + return latestRecipeVersion +} diff --git a/cli/recipe/sync_test.go b/cli/recipe/sync_test.go new file mode 100644 index 000000000..ffe9965b0 --- /dev/null +++ b/cli/recipe/sync_test.go @@ -0,0 +1,33 @@ +package recipe + +import ( + "testing" + + recipePkg "coopcloud.tech/abra/pkg/recipe" + "github.com/stretchr/testify/assert" +) + +func TestGetLatestVersionReturnsDefault(t *testing.T) { + recipe := recipePkg.Recipe{} + catalogue := recipePkg.RecipeCatalogue{} + version := getLatestVersion(recipe, catalogue) + assert.Equal(t, version, "0.0.0") +} + +func TestGetLatestVersionReturnsLastVersion(t *testing.T) { + recipe := recipePkg.Recipe{ + Name: "test", + } + versions := []map[string]map[string]recipePkg.ServiceMeta{ + make(map[string]map[string]recipePkg.ServiceMeta), + make(map[string]map[string]recipePkg.ServiceMeta), + } + versions[0]["0.0.3"] = make(map[string]recipePkg.ServiceMeta) + versions[1]["0.0.2"] = make(map[string]recipePkg.ServiceMeta) + catalogue := make(recipePkg.RecipeCatalogue) + catalogue["test"] = recipePkg.RecipeMeta{ + Versions: versions, + } + version := getLatestVersion(recipe, catalogue) + assert.Equal(t, version, "0.0.3") +}