test(core,gen): unit-тесты modifierDesiredEqualsCurrent и ValidateSpec modifier
This commit is contained in:
@@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user