test(core,gen): unit-тесты modifierDesiredEqualsCurrent и ValidateSpec modifier

This commit is contained in:
Repinoid
2026-09-22 21:20:43 +03:00
parent 6a722e49cf
commit bd46d11155
2 changed files with 122 additions and 0 deletions
@@ -0,0 +1,59 @@
package loader
import (
"testing"
"resource-generator/internal/types"
"tf-tools/lib"
)
func TestValidateSpecModifier(t *testing.T) {
mkModifier := func(ds string, idem string, dps []lib.DeleteParam, params []lib.ParamSpec) *types.ServiceSpec {
return &types.ServiceSpec{
Name: "vc_nsxt",
ServiceID: 22,
Operations: []lib.OperationSpec{
{
Name: "modify",
ID: 111,
Kind: "modifier",
Action: "modify",
Modifier: "network",
DeleteStrategy: ds,
Idempotency: idem,
DeleteParams: dps,
Params: params,
},
},
}
}
tests := []struct {
name string
spec *types.ServiceSpec
want bool // want error (true) or OK (false)
}{
{"валидный inverse", mkModifier("inverse", "none",
[]lib.DeleteParam{{Code: "needEnableAVI", Value: "false"}},
[]lib.ParamSpec{{Code: "needEnableAVI", Required: false}}), false},
{"неизвестный delete_strategy", mkModifier("bogus", "none", nil, nil), true},
{"inverse без delete_params", mkModifier("inverse", "none", nil,
[]lib.ParamSpec{{Code: "needEnableAVI"}}), true},
{"delete_params.code вне params", mkModifier("inverse", "none",
[]lib.DeleteParam{{Code: "missing", Value: "false"}},
[]lib.ParamSpec{{Code: "needEnableAVI"}}), true},
{"неизвестный idempotency", mkModifier("noop_warn", "bogus", nil, nil), true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := ValidateSpec("test.yaml", tt.spec)
if tt.want && err == nil {
t.Errorf("ожидали ошибку, получили nil")
}
if !tt.want && err != nil {
t.Errorf("ожидали OK, получили: %v", err)
}
})
}
}