From ce2ddddbc73c4400dcf1dd8e4c98bc0d1a2a6890 Mon Sep 17 00:00:00 2001 From: Daniel Naab Date: Wed, 6 May 2026 19:49:13 +0000 Subject: [PATCH 1/2] Rename flexion-notify to flexion-messaging across the site The flexion-notify repo has been renamed to flexion-messaging and made public. Update all references: content, overrides, examples, and tests. --- content/featured/messaging-lab.md | 4 ++-- data/overrides.yml | 2 +- src/design/components/lab-card/examples.tsx | 2 +- tests/build/featured.test.ts | 4 ++-- tests/views/components.test.tsx | 4 ++-- tests/views/home.test.tsx | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/content/featured/messaging-lab.md b/content/featured/messaging-lab.md index 45555f6..7e7e098 100644 --- a/content/featured/messaging-lab.md +++ b/content/featured/messaging-lab.md @@ -3,7 +3,7 @@ title: Messaging Lab tagline: Text messaging services to deliver critical updates to the people you serve. order: 2 links: - - label: flexion/flexion-notify - url: https://github.com/flexion/flexion-notify + - label: flexion/flexion-messaging + url: https://github.com/flexion/flexion-messaging kind: repo --- diff --git a/data/overrides.yml b/data/overrides.yml index 4554308..088f637 100644 --- a/data/overrides.yml +++ b/data/overrides.yml @@ -13,7 +13,7 @@ forms-lab: category: product featured: true -flexion-notify: +flexion-messaging: tier: active category: product featured: true diff --git a/src/design/components/lab-card/examples.tsx b/src/design/components/lab-card/examples.tsx index f1a01a6..a964778 100644 --- a/src/design/components/lab-card/examples.tsx +++ b/src/design/components/lab-card/examples.tsx @@ -18,7 +18,7 @@ const singleLink: FeaturedLab = { tagline: 'Text messaging services to deliver critical updates to the people you serve.', order: 2, links: [ - { label: 'flexion/flexion-notify', url: 'https://github.com/flexion/flexion-notify', kind: 'repo' }, + { label: 'flexion/flexion-messaging', url: 'https://github.com/flexion/flexion-messaging', kind: 'repo' }, ], } diff --git a/tests/build/featured.test.ts b/tests/build/featured.test.ts index f107283..fd0167e 100644 --- a/tests/build/featured.test.ts +++ b/tests/build/featured.test.ts @@ -34,8 +34,8 @@ describe('loadFeatured', () => { const messaging = labs.find((l) => l.title === 'Messaging Lab')! expect(messaging.links).toEqual([ { - label: 'flexion/flexion-notify', - url: 'https://github.com/flexion/flexion-notify', + label: 'flexion/flexion-messaging', + url: 'https://github.com/flexion/flexion-messaging', kind: 'repo', }, ]) diff --git a/tests/views/components.test.tsx b/tests/views/components.test.tsx index 6bb360e..cf4b4a9 100644 --- a/tests/views/components.test.tsx +++ b/tests/views/components.test.tsx @@ -74,7 +74,7 @@ describe('LabCard', () => { tagline: 'Text messaging services.', order: 2, links: [ - { label: 'flexion/flexion-notify', url: 'https://github.com/flexion/flexion-notify', kind: 'repo' }, + { label: 'flexion/flexion-messaging', url: 'https://github.com/flexion/flexion-messaging', kind: 'repo' }, ], } @@ -145,7 +145,7 @@ describe('LabCard', () => { const html = await renderToHtml() expect(html.match(/class="lab-card__column"/g)?.length).toBe(1) expect(html).toContain('>Repository<') - expect(html).toContain('href="https://github.com/flexion/flexion-notify"') + expect(html).toContain('href="https://github.com/flexion/flexion-messaging"') }) test('case-study kind renders its own column and heading', async () => { diff --git a/tests/views/home.test.tsx b/tests/views/home.test.tsx index 5835d9d..a5edeb3 100644 --- a/tests/views/home.test.tsx +++ b/tests/views/home.test.tsx @@ -30,7 +30,7 @@ const featured: FeaturedLab[] = [ tagline: 'Text messaging services to deliver critical updates to the people you serve.', order: 2, links: [ - { label: 'flexion/flexion-notify', url: 'https://github.com/flexion/flexion-notify', kind: 'repo' }, + { label: 'flexion/flexion-messaging', url: 'https://github.com/flexion/flexion-messaging', kind: 'repo' }, ], }, { @@ -72,7 +72,7 @@ describe('Home', () => { test('renders each labs links inside its card', async () => { const html = await renderToHtml() expect(html).toContain('href="https://github.com/flexion/forms"') - expect(html).toContain('href="https://github.com/flexion/flexion-notify"') + expect(html).toContain('href="https://github.com/flexion/flexion-messaging"') expect(html).toContain('href="https://github.com/flexion/document-extractor"') }) From 35dc669e897bd224f4bdcc0261a9028d39518725 Mon Sep 17 00:00:00 2001 From: Daniel Naab Date: Wed, 6 May 2026 19:56:48 +0000 Subject: [PATCH 2/2] Decouple featured tests from specific content values The featured build tests were asserting specific titles, URLs, and link counts from the actual markdown files. This means content editors would break tests when changing copy. Replace with structural validation: files load, required fields present, link kinds valid, sort order correct. --- tests/build/featured.test.ts | 54 +++++++++++++++--------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/tests/build/featured.test.ts b/tests/build/featured.test.ts index fd0167e..0fda91d 100644 --- a/tests/build/featured.test.ts +++ b/tests/build/featured.test.ts @@ -4,46 +4,38 @@ import { loadFeatured } from '../../src/build/featured' const ROOT = import.meta.dir + '/../..' describe('loadFeatured', () => { - test('loads every file in content/featured/ and returns them sorted by order', async () => { + test('all content/featured/ files load without error', async () => { const labs = await loadFeatured(ROOT) - expect(labs.map((l) => l.title)).toEqual([ - 'Forms Lab', - 'Messaging Lab', - 'Document Extractor Lab', - ]) + expect(labs.length).toBeGreaterThan(0) }) - test('Forms Lab has four typed links in document order', async () => { + test('every lab has required fields', async () => { const labs = await loadFeatured(ROOT) - const forms = labs.find((l) => l.title === 'Forms Lab')! - expect(forms.tagline).toBe( - 'Digitize forms to create modern, accessible experiences for public outreach.', - ) - expect(forms.order).toBe(1) - expect(forms.links).toHaveLength(4) - expect(forms.links.map((l) => l.kind)).toEqual(['demo', 'repo', 'demo', 'repo']) - expect(forms.links[0]).toEqual({ - label: 'Forms Platform', - url: 'https://10x-forms.labs.flexion.us/', - kind: 'demo', - }) + for (const lab of labs) { + expect(typeof lab.title).toBe('string') + expect(lab.title.length).toBeGreaterThan(0) + expect(typeof lab.tagline).toBe('string') + expect(lab.tagline.length).toBeGreaterThan(0) + expect(typeof lab.order).toBe('number') + expect(lab.links.length).toBeGreaterThan(0) + } }) - test('Messaging Lab has a single repo link', async () => { + test('every link has a valid kind and required fields', async () => { const labs = await loadFeatured(ROOT) - const messaging = labs.find((l) => l.title === 'Messaging Lab')! - expect(messaging.links).toEqual([ - { - label: 'flexion/flexion-messaging', - url: 'https://github.com/flexion/flexion-messaging', - kind: 'repo', - }, - ]) + const validKinds = new Set(['demo', 'repo', 'case-study']) + for (const lab of labs) { + for (const link of lab.links) { + expect(typeof link.label).toBe('string') + expect(typeof link.url).toBe('string') + expect(validKinds.has(link.kind)).toBe(true) + } + } }) - test('Document Extractor Lab has repo and case-study kinds', async () => { + test('labs are sorted by order', async () => { const labs = await loadFeatured(ROOT) - const doc = labs.find((l) => l.title === 'Document Extractor Lab')! - expect(doc.links.map((l) => l.kind)).toEqual(['repo', 'case-study']) + const orders = labs.map((l) => l.order) + expect(orders).toEqual([...orders].sort((a, b) => a - b)) }) })