summaryrefslogtreecommitdiff
path: root/internal/validate/formvalidation_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/validate/formvalidation_test.go')
-rw-r--r--internal/validate/formvalidation_test.go87
1 files changed, 33 insertions, 54 deletions
diff --git a/internal/validate/formvalidation_test.go b/internal/validate/formvalidation_test.go
index 534e5b849..40830407c 100644
--- a/internal/validate/formvalidation_test.go
+++ b/internal/validate/formvalidation_test.go
@@ -159,60 +159,39 @@ func (suite *ValidationTestSuite) TestValidateEmail() {
}
func (suite *ValidationTestSuite) TestValidateLanguage() {
- empty := ""
- notALanguage := "this isn't a language at all!"
- english := "en"
- capitalEnglish := "EN"
- arabic3Letters := "ara"
- mixedCapsEnglish := "eN"
- englishUS := "en-us"
- dutch := "nl"
- german := "de"
- var err error
-
- err = validate.Language(empty)
- if suite.Error(err) {
- suite.Equal(errors.New("no language provided"), err)
- }
-
- err = validate.Language(notALanguage)
- if suite.Error(err) {
- suite.Equal(errors.New("language: tag is not well-formed"), err)
- }
-
- err = validate.Language(english)
- if suite.NoError(err) {
- suite.Equal(nil, err)
- }
-
- err = validate.Language(capitalEnglish)
- if suite.NoError(err) {
- suite.Equal(nil, err)
- }
-
- err = validate.Language(arabic3Letters)
- if suite.NoError(err) {
- suite.Equal(nil, err)
- }
-
- err = validate.Language(mixedCapsEnglish)
- if suite.NoError(err) {
- suite.Equal(nil, err)
- }
-
- err = validate.Language(englishUS)
- if suite.Error(err) {
- suite.Equal(errors.New("language: tag is not well-formed"), err)
- }
-
- err = validate.Language(dutch)
- if suite.NoError(err) {
- suite.Equal(nil, err)
- }
-
- err = validate.Language(german)
- if suite.NoError(err) {
- suite.Equal(nil, err)
+ testCases := []struct {
+ name, input, expected, err string
+ }{
+ {name: "empty", err: "no language provided"},
+ {name: "notALanguage", input: "this isn't a language at all!", err: "language: tag is not well-formed"},
+ {name: "english", input: "en", expected: "en"},
+ // Should be all lowercase
+ {name: "capitalEnglish", input: "EN", expected: "en"},
+ // Overlong, should be in ISO 639-1 format
+ {name: "arabic3Letters", input: "ara", expected: "ar"},
+ // Should be all lowercase
+ {name: "mixedCapsEnglish", input: "eN", expected: "en"},
+ // Region should be capitalized
+ {name: "englishUS", input: "en-us", expected: "en-US"},
+ {name: "dutch", input: "nl", expected: "nl"},
+ {name: "german", input: "de", expected: "de"},
+ {name: "chinese", input: "zh", expected: "zh"},
+ {name: "chineseSimplified", input: "zh-Hans", expected: "zh-Hans"},
+ {name: "chineseTraditional", input: "zh-Hant", expected: "zh-Hant"},
+ }
+
+ for _, testCase := range testCases {
+ testCase := testCase
+ suite.Run(testCase.name, func() {
+ actual, actualErr := validate.Language(testCase.input)
+ if testCase.err == "" {
+ suite.Equal(testCase.expected, actual)
+ suite.NoError(actualErr)
+ } else {
+ suite.Empty(actual)
+ suite.EqualError(actualErr, testCase.err)
+ }
+ })
}
}