diff --git a/src/server/signals/truth.test.ts b/src/server/signals/truth.test.ts index 8087b7d..4c1c514 100644 --- a/src/server/signals/truth.test.ts +++ b/src/server/signals/truth.test.ts @@ -15,6 +15,14 @@ describe('parseTruthFeed', () => { expect(posts[0].text).toContain('Bitcoin is going to the MOON'); expect(posts[0].text).not.toContain('

'); }); + test('überspringt malformed Items, leerer Input → []', () => { + expect(parseTruthFeed('')).toEqual([]); + const bad = ` +Fri, 12 Jun 2026 01:49:56 +0000ohne Link +https://trumpstruth.org/statuses/3kein Datumx +`; + expect(parseTruthFeed(bad)).toEqual([]); + }); }); describe('matchCoins', () => { diff --git a/src/server/signals/truth.ts b/src/server/signals/truth.ts index a4f6bf8..48793cf 100644 --- a/src/server/signals/truth.ts +++ b/src/server/signals/truth.ts @@ -21,7 +21,7 @@ export function parseTruthFeed(xml: string): TruthPost[] { const text = descRaw .replace(/^$/g, '') .replace(/<[^>]+>/g, ' ') - .replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, "'") + .replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, "'").replace(/ /g, ' ') .replace(/\s+/g, ' ') .trim(); posts.push({ url, ts, text });