Ctrl K
ComunidadGuías…

api/controller/cluster_lang_version_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package controller

import (
	"testing"

	apimodel "github.com/goodrain/rainbond/api/model"
	dbmodel "github.com/goodrain/rainbond/db/model"
)

func TestLongVersionCreateDefaults(t *testing.T) {
	req := &apimodel.UpdateLangVersion{
		Lang:    "python",
		Version: "3.11",
		Show:    true,
	}

	version := buildLangVersionForCreate(req)

	if version.BuildStrategy != dbmodel.LongVersionBuildStrategySlug {
		t.Fatalf("expected default build strategy %q, got %q", dbmodel.LongVersionBuildStrategySlug, version.BuildStrategy)
	}
	if !version.IsAllowed {
		t.Fatal("expected create request to default is_allowed to true")
	}
}

func TestUpdateLangVersionKeepsExistingStrategyAndAllowedWhenOmitted(t *testing.T) {
	existing := &dbmodel.EnterpriseLanguageVersion{
		Lang:          "python",
		Version:       "3.11",
		BuildStrategy: dbmodel.LongVersionBuildStrategyCNB,
		IsAllowed:     false,
		Show:          true,
		FirstChoice:   false,
	}
	req := &apimodel.UpdateLangVersion{
		Lang:        "python",
		Version:     "3.11",
		Show:        false,
		FirstChoice: true,
	}

	version := buildLangVersionForUpdate(existing, req)

	if version.BuildStrategy != dbmodel.LongVersionBuildStrategyCNB {
		t.Fatalf("expected update to keep existing build strategy %q, got %q", dbmodel.LongVersionBuildStrategyCNB, version.BuildStrategy)
	}
	if version.IsAllowed {
		t.Fatal("expected update to keep existing is_allowed=false when request omits the field")
	}
	if version.Show {
		t.Fatal("expected update to apply new show value")
	}
	if !version.FirstChoice {
		t.Fatal("expected update to apply new first_choice value")
	}
}

func TestUpdateLangVersionHonorsExplicitStrategyAndAllowed(t *testing.T) {
	existing := &dbmodel.EnterpriseLanguageVersion{
		Lang:          "python",
		Version:       "3.11",
		BuildStrategy: dbmodel.LongVersionBuildStrategySlug,
		IsAllowed:     true,
	}
	buildStrategy := dbmodel.LongVersionBuildStrategyCNB
	isAllowed := false
	req := &apimodel.UpdateLangVersion{
		Lang:          "python",
		Version:       "3.11",
		Show:          true,
		FirstChoice:   true,
		BuildStrategy: &buildStrategy,
		IsAllowed:     &isAllowed,
	}

	version := buildLangVersionForUpdate(existing, req)

	if version.BuildStrategy != dbmodel.LongVersionBuildStrategyCNB {
		t.Fatalf("expected update to use explicit build strategy %q, got %q", dbmodel.LongVersionBuildStrategyCNB, version.BuildStrategy)
	}
	if version.IsAllowed {
		t.Fatal("expected update to use explicit is_allowed=false")
	}
}