diff options
author | 2023-08-07 01:25:54 -0700 | |
---|---|---|
committer | 2023-08-07 10:25:54 +0200 | |
commit | 0f812746b7fd9dfeef41e329af5215772672689a (patch) | |
tree | adfc0c9e4412982224d32019b8abfc2895cd3f66 /internal/validate/formvalidation_test.go | |
parent | [chore]: Bump golang.org/x/oauth2 from 0.10.0 to 0.11.0 (#2076) (diff) | |
download | gotosocial-0f812746b7fd9dfeef41e329af5215772672689a.tar.xz |
[feature] Allow full BCP 47 in language inputs (#2067)
* Allow full BCP 47 in language inputs
Fixes #2066
* Fuse validation and normalization for languages
* Remove outdated comment line
* Move post language canonicalization test
Diffstat (limited to 'internal/validate/formvalidation_test.go')
-rw-r--r-- | internal/validate/formvalidation_test.go | 87 |
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) + } + }) } } |