|
1 | 1 | import assert from "node:assert/strict"; |
2 | 2 | import { describe, it } from "node:test"; |
3 | 3 | import { htmlToMarkdown } from "../src/html-to-md.js"; |
4 | | -import { articleToSpec, berlinToUnix, businessToSpec, dealToSpec, eventToSpec, listingToSpec, MAPPER_VERSION, menuToSpec, movieToSpec, newsToSpec, noticeToSpec, orgPostToSpec, orgToSpec } from "../src/mappers.js"; |
| 4 | +import { articleToSpec, berlinToUnix, businessToSpec, dealToSpec, eventToSpec, listingToSpec, MAPPER_VERSION, menuToSpec, movieToSpec, newsToSpec, noticeToSpec, orgPostToSpec, orgToSpec, proposalToSpec } from "../src/mappers.js"; |
5 | 5 |
|
6 | 6 | const ORG_ID = "11111111-1111-1111-1111-111111111111"; |
7 | 7 | const ORGS = new Set([ORG_ID]); |
@@ -566,3 +566,33 @@ describe("menu mapping", () => { |
566 | 566 | assert.equal(menu.categories[1].name, "Another Active"); |
567 | 567 | }); |
568 | 568 | }); |
| 569 | + |
| 570 | +describe("proposal mapping", () => { |
| 571 | + it("proposalToSpec: a proposal becomes a discoverable pointer", () => { |
| 572 | + const spec = proposalToSpec( |
| 573 | + { id: "p-row-1", proposal_id: "42", blockchain_proposal_id: "0xabc123", proposal_number: 7, |
| 574 | + title: "Neuer Spielplatz", summary: "Am Hafen", category: "infrastruktur", |
| 575 | + irys_content_id: "IRYS_TX_1", state: 1, created_at: "2026-07-01T10:00:00Z", |
| 576 | + updated_at: "2026-07-02T10:00:00Z", |
| 577 | + proposer_address: "0x5e6528DEADBEEF" }, |
| 578 | + "100:0x5F5e499Dc1872c2Ce19a4b50cd10f680e78E3Ba3", |
| 579 | + ); |
| 580 | + assert.ok(spec); |
| 581 | + assert.equal(spec!.kind, 32100); |
| 582 | + assert.equal(spec!.scope, "town"); |
| 583 | + assert.equal(spec!.d, "proposal:42"); |
| 584 | + assert.equal(spec!.content, "Am Hafen"); |
| 585 | + const tag = (n: string) => spec!.tags.find((t) => t[0] === n)?.[1]; |
| 586 | + assert.equal(tag("title"), "Neuer Spielplatz"); |
| 587 | + assert.equal(tag("governor"), "100:0x5F5e499Dc1872c2Ce19a4b50cd10f680e78E3Ba3"); |
| 588 | + assert.equal(tag("proposal_id"), "0xabc123"); |
| 589 | + assert.equal(tag("irys"), "IRYS_TX_1"); |
| 590 | + assert.equal(tag("status"), "1"); |
| 591 | + // The proposer's wallet must NOT ride on the record event. |
| 592 | + assert.ok(!JSON.stringify(spec).includes("0x5e6528DEADBEEF")); |
| 593 | + }); |
| 594 | + |
| 595 | + it("proposalToSpec: no governor configured → nothing publishes", () => { |
| 596 | + assert.equal(proposalToSpec({ id: "x", proposal_id: "1", title: "t" }, ""), null); |
| 597 | + }); |
| 598 | +}); |
0 commit comments