From 92252f8bc9ef98e1e54494e78e5a704ed1399c83 Mon Sep 17 00:00:00 2001 From: wgroeneveld Date: Wed, 22 Jun 2022 21:28:55 +0200 Subject: [PATCH] wmio import: also trim name and add extra tests --- app/external/webmentionio.go | 5 ++-- app/external/webmentionio_test.go | 48 +++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/app/external/webmentionio.go b/app/external/webmentionio.go index 2b4f3f3..108794a 100644 --- a/app/external/webmentionio.go +++ b/app/external/webmentionio.go @@ -118,10 +118,11 @@ func sourceOf(wmio WebmentionIOMention) string { } func nameOf(wmio WebmentionIOMention, iType mf.MfType) string { + name := wmio.Data.Name if (iType == mf.TypeReply || iType == mf.TypeLike) && wmio.Data.Name == "" { - return wmio.Data.Content + name = wmio.Data.Content } - return wmio.Data.Name + return common.Shorten(name) } func contentOf(wmio WebmentionIOMention, iType mf.MfType) string { diff --git a/app/external/webmentionio_test.go b/app/external/webmentionio_test.go index 8a32db8..e53416c 100644 --- a/app/external/webmentionio_test.go +++ b/app/external/webmentionio_test.go @@ -7,6 +7,54 @@ import ( "time" ) +func TestTryImportName(t *testing.T) { + wmio := &WebmentionIOImporter{} + cases := []struct { + label string + mention string + expectedDate string + }{ + { + "Just use name", + `{ "links": [ { "data": { "name": "jefke" } } ] }`, + "jefke", + }, + { + "Trim name if longer than 250 chars", + `{ "links": [ { "data": { "name": "a;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfj" } } ] }`, + "a;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;askdfj;alskdfja;dslfkja;dlfkja;ldkfja;ldkfjla;dkfja;ldkjfa;ldkjfl;...", + }, + { + "Use content if name is empty in case of reply", + `{ "links": [ { "activity": { "type": "reply" }, "data": { "name": "", "content": "wouter" } } ] }`, + "wouter", + }, + { + "Use content if name is empty in case of like", + `{ "links": [ { "activity": { "type": "like" }, "data": { "name": "", "content": "wouter" } } ] }`, + "wouter", + }, + { + "Use name if name is not empty in case of reply", + `{ "links": [ { "activity": { "type": "reply" }, "data": { "name": "jef", "content": "wouter" } } ] }`, + "jef", + }, { + "Use name if name is not empty in case of like", + `{ "links": [ { "activity": { "type": "like" }, "data": { "name": "jef", "content": "wouter" } } ] }`, + "jef", + }, + } + + for _, tc := range cases { + t.Run(tc.label, func(t *testing.T) { + res, err := wmio.TryImport([]byte(tc.mention)) + assert.NoError(t, err) + + assert.Equal(t, tc.expectedDate, res[0].Name) + }) + } +} + func TestTryImportBridgyUrl(t *testing.T) { wmio := &WebmentionIOImporter{} cases := []struct {