diff --git a/cmd/bundle/init.go b/cmd/bundle/init.go index bfca7735..23655478 100644 --- a/cmd/bundle/init.go +++ b/cmd/bundle/init.go @@ -14,7 +14,6 @@ var initCmd = &cobra.Command{ Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { // initialize default value for config file path - // TODO: add a test for this if configFile == "" { configFile = filepath.Join(targetDir, template.ConfigFileName) } diff --git a/libs/template/execute.go b/libs/template/execute.go index 8563c14a..9d247132 100644 --- a/libs/template/execute.go +++ b/libs/template/execute.go @@ -26,8 +26,6 @@ func executeTemplate(config map[string]any, templateDefination string) (string, return result.String(), nil } -// TODO: allow skipping directories - func generateFile(config map[string]any, pathTemplate, contentTemplate string) error { // compute file content fileContent, err := executeTemplate(config, contentTemplate) diff --git a/libs/template/schema.go b/libs/template/schema.go index 0efbad55..9759eee6 100644 --- a/libs/template/schema.go +++ b/libs/template/schema.go @@ -74,7 +74,6 @@ func validateType(v any, fieldType FieldType) error { return validateFunc(v) } -// TODO: add validation check for regex for string types func (schema Schema) ValidateConfig(config map[string]any) error { // validate types defined in config for k, v := range config { diff --git a/libs/template/validators.go b/libs/template/validators.go index 39e7fe9c..4442173f 100644 --- a/libs/template/validators.go +++ b/libs/template/validators.go @@ -9,7 +9,6 @@ import ( type Validator func(v any) error -// TODO: refactor tests into individual tests for individual validators func validateString(v any) error { if _, ok := v.(string); !ok { return fmt.Errorf("expected type string, but value is %#v", v) diff --git a/libs/template/validators_test.go b/libs/template/validators_test.go new file mode 100644 index 00000000..5621ef92 --- /dev/null +++ b/libs/template/validators_test.go @@ -0,0 +1,75 @@ +package template + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestValidatorString(t *testing.T) { + err := validateString("abc") + assert.NoError(t, err) + + err = validateString(1) + assert.ErrorContains(t, err, "expected type string, but value is 1") + + err = validateString(true) + assert.ErrorContains(t, err, "expected type string, but value is true") + + err = validateString("false") + assert.NoError(t, err) +} + +func TestValidatorBoolean(t *testing.T) { + err := validateBoolean(true) + assert.NoError(t, err) + + err = validateBoolean(1) + assert.ErrorContains(t, err, "expected type boolean, but value is 1") + + err = validateBoolean("abc") + assert.ErrorContains(t, err, "expected type boolean, but value is \"abc\"") + + err = validateBoolean("false") + assert.ErrorContains(t, err, "expected type boolean, but value is \"false\"") +} + +func TestValidatorFloat(t *testing.T) { + err := validateFloat(true) + assert.ErrorContains(t, err, "expected type float, but value is true") + + err = validateFloat(int32(1)) + assert.ErrorContains(t, err, "expected type float, but value is 1") + + err = validateFloat(int64(1)) + assert.ErrorContains(t, err, "expected type float, but value is 1") + + err = validateFloat(float32(1)) + assert.NoError(t, err) + + err = validateFloat(float64(1)) + assert.NoError(t, err) + + err = validateFloat("abc") + assert.ErrorContains(t, err, "expected type float, but value is \"abc\"") +} + +func TestValidatorInt(t *testing.T) { + err := validateInteger(true) + assert.ErrorContains(t, err, "expected type integer, but value is true") + + err = validateInteger(int32(1)) + assert.NoError(t, err) + + err = validateInteger(int64(1)) + assert.NoError(t, err) + + err = validateInteger(float32(1)) + assert.ErrorContains(t, err, "expected type integer, but value is 1") + + err = validateInteger(float64(1)) + assert.ErrorContains(t, err, "expected type integer, but value is 1") + + err = validateInteger("abc") + assert.ErrorContains(t, err, "expected type integer, but value is \"abc\"") +}