package skills import ( "testing" "github.com/stretchr/testify/assert" ) func TestSkillsInfoValidate(t *testing.T) { testcases := []struct { name string skillName string description string wantErr bool errContains []string }{ { name: "valid-skill", skillName: "valid-skill", description: "a valid skill description", wantErr: false, }, { name: "empty-name", skillName: "", description: "description without name", wantErr: true, errContains: []string{"name is required"}, }, { name: "empty-description", skillName: "skill-without-description", description: "", wantErr: true, errContains: []string{"description is required"}, }, { name: "empty-both", skillName: "", description: "", wantErr: true, errContains: []string{"name is required", "description is required"}, }, { name: "name-with-spaces", skillName: "skill with spaces", description: "invalid name with spaces", wantErr: true, errContains: []string{"name must be alphanumeric with hyphens"}, }, { name: "name-with-underscore", skillName: "skill_underscore", description: "invalid name with underscore", wantErr: true, errContains: []string{"name must be alphanumeric with hyphens"}, }, } for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { info := SkillInfo{ Name: tc.skillName, Description: tc.description, } err := info.validate() if tc.wantErr { assert.Error(t, err) for _, msg := range tc.errContains { assert.ErrorContains(t, err, msg) } } else { assert.NoError(t, err) } }) } }