diff --git a/frontend/src/lib/messages.spec.ts b/frontend/src/lib/messages.spec.ts index 155ae1a3..22f1527b 100644 --- a/frontend/src/lib/messages.spec.ts +++ b/frontend/src/lib/messages.spec.ts @@ -133,4 +133,33 @@ describe('message key parity', () => { expect(es, `missing key in es: ${key}`).toHaveProperty(key); } }); + + // #827 REQ-012: the grouping toggle + bucket strings are new Paraglide keys in + // every locale; the pre-existing timeline_grouping_date / timeline_tag_chip_label / + // timeline_filter_* set is reused, never re-added. + it('zeitstrahl grouping + bucket keys are present in all locales (#827 REQ-012)', () => { + const requiredKeys = [ + 'timeline_grouping_event', + 'timeline_grouping_thema', + 'timeline_grouping_aria_label', + 'timeline_grouping_segment_date', + 'timeline_grouping_segment_event', + 'timeline_grouping_segment_thema', + 'timeline_grouping_segment_date_short', + 'timeline_grouping_segment_event_short', + 'timeline_grouping_segment_thema_short', + 'timeline_grouping_disabled_reason', + 'timeline_grouping_multitag_hint', + 'timeline_bucket_other_letters', + 'timeline_bucket_no_topic' + ]; + for (const key of requiredKeys) { + expect(de, `missing key in de: ${key}`).toHaveProperty(key); + expect(en, `missing key in en: ${key}`).toHaveProperty(key); + expect(es, `missing key in es: ${key}`).toHaveProperty(key); + } + // the pre-existing meta-line + chip keys are reused by #827, not re-declared + expect(de).toHaveProperty('timeline_grouping_date'); + expect(de).toHaveProperty('timeline_tag_chip_label'); + }); });