diff options
author | 2023-11-21 15:13:30 +0100 | |
---|---|---|
committer | 2023-11-21 15:13:30 +0100 | |
commit | cfefbc08d822cd85787d95dc2ee253e3368826d8 (patch) | |
tree | af6d6257dddca1645ab5f8e34a1c79ac80d82e0e /internal/typeutils/util_test.go | |
parent | [docs] Annotate split-domain setup (#2372) (diff) | |
download | gotosocial-cfefbc08d822cd85787d95dc2ee253e3368826d8.tar.xz |
[feature] Federate status language in and out (#2366)
* [feature] Federate status language in + out
* go fmt
* tests, little fix
* improve comments
* unnest a bit
* avoid unnecessary nil check
* use more descriptive variable for contentMap
* prefer instance languages when selecting from contentMap
* update docs to reflect lang selection
* rename rdfLangString -> rdfLangs
* update comments to mention Pollable
* iter through slice instead of map
Diffstat (limited to 'internal/typeutils/util_test.go')
-rw-r--r-- | internal/typeutils/util_test.go | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/internal/typeutils/util_test.go b/internal/typeutils/util_test.go index e6610574b..0f852d399 100644 --- a/internal/typeutils/util_test.go +++ b/internal/typeutils/util_test.go @@ -18,7 +18,12 @@ package typeutils import ( + "context" "testing" + + "github.com/superseriousbusiness/gotosocial/internal/config" + "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" + "github.com/superseriousbusiness/gotosocial/internal/language" ) func TestMisskeyReportContentURLs1(t *testing.T) { @@ -44,3 +49,112 @@ misskey-formatted` t.Fatalf("wanted 0 urls, got %d", l) } } + +func TestContentToContentLanguage(t *testing.T) { + type testcase struct { + content gtsmodel.Content + instanceLanguages language.Languages + expectedContent string + expectedLang string + } + + ctx, cncl := context.WithCancel(context.Background()) + defer cncl() + + for i, testcase := range []testcase{ + { + content: gtsmodel.Content{ + Content: "hello world", + ContentMap: nil, + }, + expectedContent: "hello world", + expectedLang: "", + }, + { + content: gtsmodel.Content{ + Content: "", + ContentMap: map[string]string{ + "en": "hello world", + }, + }, + expectedContent: "hello world", + expectedLang: "en", + }, + { + content: gtsmodel.Content{ + Content: "bonjour le monde", + ContentMap: map[string]string{ + "en": "hello world", + "fr": "bonjour le monde", + }, + }, + expectedContent: "bonjour le monde", + expectedLang: "fr", + }, + { + content: gtsmodel.Content{ + Content: "bonjour le monde", + ContentMap: map[string]string{ + "en": "hello world", + }, + }, + expectedContent: "bonjour le monde", + expectedLang: "", + }, + { + content: gtsmodel.Content{ + Content: "", + ContentMap: map[string]string{ + "en": "hello world", + "ru": "Привет, мир!", + "nl": "hallo wereld!", + "ca": "Hola món!", + }, + }, + instanceLanguages: language.Languages{ + {TagStr: "en"}, + {TagStr: "ca"}, + }, + expectedContent: "hello world", + expectedLang: "en", + }, + { + content: gtsmodel.Content{ + Content: "", + ContentMap: map[string]string{ + "en": "hello world", + "ru": "Привет, мир!", + "nl": "hallo wereld!", + "ca": "Hola món!", + }, + }, + instanceLanguages: language.Languages{ + {TagStr: "ca"}, + {TagStr: "en"}, + }, + expectedContent: "Hola món!", + expectedLang: "ca", + }, + } { + langs, err := language.InitLangs(testcase.instanceLanguages.TagStrs()) + if err != nil { + t.Fatal(err) + } + config.SetInstanceLanguages(langs) + + content, language := ContentToContentLanguage(ctx, testcase.content) + if content != testcase.expectedContent { + t.Errorf( + "test %d expected content '%s' got '%s'", + i, testcase.expectedContent, content, + ) + } + + if language != testcase.expectedLang { + t.Errorf( + "test %d expected language '%s' got '%s'", + i, testcase.expectedLang, language, + ) + } + } +} |