diff options
author | 2023-11-17 11:35:28 +0100 | |
---|---|---|
committer | 2023-11-17 11:35:28 +0100 | |
commit | fc02d3c6f7db5a7794448f31fd9d6d81d3d224eb (patch) | |
tree | f792f799abadf784e493933af597d8f2292ab776 /internal/language/language_test.go | |
parent | [bugfix] process account delete side effects in serial, not in parallel (#2360) (diff) | |
download | gotosocial-fc02d3c6f7db5a7794448f31fd9d6d81d3d224eb.tar.xz |
[feature] Set/show instance language(s); show post language on frontend (#2362)
* update go text, include text/display
* [feature] Set instance langs, show post lang on frontend
* go fmt
* WebGet
* set language for whole article, don't use FA icon
* mention instance languages + other optional config vars
* little tweak
* put languages in config properly
* warn log language parse
* change some naming around
* tidy up validate a bit
* lint
* rename LanguageTmpl in template
Diffstat (limited to 'internal/language/language_test.go')
-rw-r--r-- | internal/language/language_test.go | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/internal/language/language_test.go b/internal/language/language_test.go new file mode 100644 index 000000000..024448ab4 --- /dev/null +++ b/internal/language/language_test.go @@ -0,0 +1,142 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +package language_test + +import ( + "slices" + "testing" + + "github.com/superseriousbusiness/gotosocial/internal/language" + golanguage "golang.org/x/text/language" +) + +func TestInstanceLangs(t *testing.T) { + for i, test := range []struct { + InstanceLangs []string + expectedLangs []golanguage.Tag + expectedLangStrs []string + expectedErr error + parseDisplayLang string + expectedDisplayLang string + }{ + { + InstanceLangs: []string{"en-us", "fr"}, + expectedLangs: []golanguage.Tag{ + golanguage.AmericanEnglish, + golanguage.French, + }, + expectedLangStrs: []string{ + "American English", + "French (français)", + }, + parseDisplayLang: "de", + expectedDisplayLang: "German (Deutsch)", + }, + { + InstanceLangs: []string{"fr", "en-us"}, + expectedLangs: []golanguage.Tag{ + golanguage.French, + golanguage.AmericanEnglish, + }, + expectedLangStrs: []string{ + "français", + "anglais américain (American English)", + }, + parseDisplayLang: "de", + expectedDisplayLang: "allemand (Deutsch)", + }, + { + InstanceLangs: []string{}, + expectedLangs: []golanguage.Tag{}, + expectedLangStrs: []string{}, + parseDisplayLang: "de", + expectedDisplayLang: "German (Deutsch)", + }, + { + InstanceLangs: []string{"zh"}, + expectedLangs: []golanguage.Tag{ + golanguage.Chinese, + }, + expectedLangStrs: []string{ + "中文", + }, + parseDisplayLang: "de", + expectedDisplayLang: "德语 (Deutsch)", + }, + { + InstanceLangs: []string{"ar", "en"}, + expectedLangs: []golanguage.Tag{ + golanguage.Arabic, + golanguage.English, + }, + expectedLangStrs: []string{ + "العربية", + "الإنجليزية (English)", + }, + parseDisplayLang: "fi", + expectedDisplayLang: "الفنلندية (suomi)", + }, + { + InstanceLangs: []string{"en-us"}, + expectedLangs: []golanguage.Tag{ + golanguage.AmericanEnglish, + }, + expectedLangStrs: []string{ + "American English", + }, + parseDisplayLang: "en-us", + expectedDisplayLang: "American English", + }, + { + InstanceLangs: []string{"en-us"}, + expectedLangs: []golanguage.Tag{ + golanguage.AmericanEnglish, + }, + expectedLangStrs: []string{ + "American English", + }, + parseDisplayLang: "en-gb", + expectedDisplayLang: "British English", + }, + } { + languages, err := language.InitLangs(test.InstanceLangs) + if err != test.expectedErr { + t.Errorf("test %d expected error %v, got %v", i, test.expectedErr, err) + } + + parsedTags := languages.Tags() + if !slices.Equal(test.expectedLangs, parsedTags) { + t.Errorf("test %d expected language tags %v, got %v", i, test.expectedLangs, parsedTags) + } + + parsedLangStrs := languages.DisplayStrs() + if !slices.Equal(test.expectedLangStrs, parsedLangStrs) { + t.Errorf("test %d expected language strings %v, got %v", i, test.expectedLangStrs, parsedLangStrs) + } + + parsedLang, err := language.Parse(test.parseDisplayLang) + if err != nil { + t.Errorf("unexpected error %v", err) + return + } + + if test.expectedDisplayLang != parsedLang.DisplayStr { + t.Errorf("test %d expected to parse language %v, got %v", i, test.expectedDisplayLang, parsedLang.DisplayStr) + } + } +} |