diff --git a/src/ring.ts b/src/ring.ts index 00cd9e0..0b330a9 100644 --- a/src/ring.ts +++ b/src/ring.ts @@ -60,6 +60,7 @@ export const RING: RingSite[] = [ { name: 'live.streaming', about: 'Radio and TV stations, live now: AI-composed music, tracks shared by listeners, and more.', moshpit: true, keywords: ['radio', 'live tv', 'stations', 'stream'] }, { name: 'pics.collage', about: 'Make photo collages on your phone: grids, freestyle, stickers, text and backgrounds. Free, no account, works offline.', moshpit: true, keywords: ['collage', 'photo grid', 'photo editor'] }, { name: 'my.ip', about: 'Your public IPv4 and IPv6 in one answer, as text or JSON. curl -L my.ip.pit.world', moshpit: true, keywords: ['my ip', 'what is my ip', 'ip address', 'ipv6', 'ipv4'] }, + { name: 'mums.flower', about: "Flowers for moms: remember her birthday and Mother's Day, learn what flowers mean, send her a bouquet card. API, MCP, CLI.", moshpit: true, keywords: ["mother's day", 'mothers day', 'mothering sunday', 'flowers for mom', 'flower meanings', 'bouquet'] }, ] let source: (() => ListingMember[]) | null = null diff --git a/test/pit.test.ts b/test/pit.test.ts index e16b72b..b257c7a 100644 --- a/test/pit.test.ts +++ b/test/pit.test.ts @@ -948,8 +948,9 @@ describe('the Moshpit ring', () => { expect(neighbors('offtherecord.podcast').next.name).toBe('live.streaming') expect(neighbors('live.streaming').next.name).toBe('pics.collage') expect(neighbors('pics.collage').next.name).toBe('my.ip') - expect(neighbors('my.ip').next.name).toBe('pit.world') - expect(neighbors('pit.world').prev.name).toBe('my.ip') + expect(neighbors('my.ip').next.name).toBe('mums.flower') + expect(neighbors('mums.flower').next.name).toBe('pit.world') + expect(neighbors('pit.world').prev.name).toBe('mums.flower') expect(neighbors('WWW.SEO.RANK.').next.name).toBe('family.ancestry') for (const r of [0, 0.5, 0.99]) expect(randomSite('seo.rank', () => r).name).not.toBe('seo.rank') }) diff --git a/test/pros.test.ts b/test/pros.test.ts index 6b9c07d..64d2b6d 100644 --- a/test/pros.test.ts +++ b/test/pros.test.ts @@ -266,7 +266,7 @@ describe('the pit.world ring: claimed listings join it', () => { expect(names).not.toContain('acme-plumbing.com') expect((await h.listings.get('acme-plumbing.com'))!.ring).toBe(false) expect(await (await h.request('/b/acme-plumbing.com/edit')).text()).not.toContain('Leave the ring') - expect(names.slice(0, 16)).toEqual([ + expect(names.slice(0, 17)).toEqual([ 'pit.world', 'seo.rank', 'family.ancestry', @@ -283,11 +283,13 @@ describe('the pit.world ring: claimed listings join it', () => { 'live.streaming', 'pics.collage', 'my.ip', + 'mums.flower', ]) expect(ring.sites.at(-1)).toMatchObject({ name: 'acme.pit.world', listing: true, moshpit: false, feed: 'https://acme.pit.world/rss.xml' }) - expect((await h.request('/ring/next?from=https%3A%2F%2Fmy.ip%2F&direct=1')).headers.get('location')).toBe('https://acme.pit.world/') + expect((await h.request('/ring/next?from=https%3A%2F%2Fmy.ip%2F&direct=1')).headers.get('location')).toBe('https://mums.flower/') + expect((await h.request('/ring/next?from=https%3A%2F%2Fmums.flower%2F&direct=1')).headers.get('location')).toBe('https://acme.pit.world/') expect((await h.request('/ring/next?from=acme.pit.world')).headers.get('location')).toBe('https://pit.world/') - expect((await h.request('/ring/prev', { headers: { referer: 'https://www.acme.pit.world/about' } })).headers.get('location')).toBe('https://my.ip.pit.world/') + expect((await h.request('/ring/prev', { headers: { referer: 'https://www.acme.pit.world/about' } })).headers.get('location')).toBe('https://mums.flower.pit.world/') expect((await h.request('/ring/random?from=acme.pit.world')).headers.get('cache-control')).toBe('no-store') const page = await (await h.request('/ring')).text() expect(page).toContain('href="/b/acme.pit.world"') @@ -306,7 +308,7 @@ describe('the pit.world ring: claimed listings join it', () => { const ok = await (await h.form('/b/acme.bakery/verify', { claim: start.claimId })).text() expect(ok).toContain('pit.world/ring/next?from=https%3A%2F%2Facme.bakery%2F') expect(ok).toContain('https://rssamplifier.com/ring/pit-world') - expect(neighbors('my.ip').next).toMatchObject({ name: 'acme.bakery', moshpit: true }) + expect(neighbors('mums.flower').next).toMatchObject({ name: 'acme.bakery', moshpit: true }) }) })