Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 1 | import assert from "node:assert/strict"; |
| 2 | import { test } from "node:test"; | |
| 3 | ||
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 4 | import { |
| 5 | INVITES_DONE, | |
| 6 | MAX_BULK, | |
| 7 | doneMessage, | |
| 8 | invitesHref, | |
| 9 | parseGrant, | |
| 10 | parseIds, | |
| 11 | parseMintEmail, | |
| 12 | parseNote, | |
| 13 | parseTab, | |
| 14 | parseWaitlistStatus, | |
| 15 | } from "./invites.ts"; | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 16 | |
| 17 | const form = (fields: Record<string, string>) => ({ get: (name: string) => fields[name] ?? null }); | |
| 18 | ||
| 19 | test("the page opens on the waitlist, and each tab has an address", () => { | |
| 20 | assert.equal(parseTab(null), "waitlist"); | |
| 21 | assert.equal(parseTab("tree"), "tree"); | |
| 22 | assert.equal(parseTab("nope"), "waitlist"); | |
| 23 | assert.equal(invitesHref("invites", { q: "g1t-k7m2", empty: "" }), "/invites?tab=invites&q=g1t-k7m2"); | |
| 24 | assert.equal(parseWaitlistStatus(null), "waiting"); | |
| 25 | assert.equal(parseWaitlistStatus("all"), "all"); | |
| 26 | assert.equal(parseWaitlistStatus("dismissed"), "dismissed"); | |
| 27 | }); | |
| 28 | ||
| 29 | test("a grant names who, how many and why", () => { | |
| 30 | assert.deepEqual(parseGrant(form({ target: "user", name: "@Ada", amount: "10", note: "Launch partner" })), { | |
| 31 | ok: true, | |
| 32 | value: { target: "user", name: "ada", amount: 10, note: "Launch partner" }, | |
| 33 | }); | |
| 34 | assert.deepEqual(parseGrant(form({ target: "workspace", name: "acme", amount: "-5", note: "Abuse" })), { | |
| 35 | ok: true, | |
| 36 | value: { target: "workspace", name: "acme", amount: -5, note: "Abuse" }, | |
| 37 | }); | |
| 38 | assert.equal(parseGrant(form({ target: "team", name: "acme", amount: "5", note: "why" })).ok, false); | |
| 39 | assert.equal(parseGrant(form({ target: "user", name: "not a name", amount: "5", note: "why" })).ok, false); | |
| 40 | assert.equal(parseGrant(form({ target: "user", name: "ada", amount: "0", note: "why" })).ok, false); | |
| 41 | assert.equal(parseGrant(form({ target: "user", name: "ada", amount: "1.5", note: "why" })).ok, false); | |
| 42 | assert.equal(parseGrant(form({ target: "user", name: "ada", amount: "5000", note: "why" })).ok, false); | |
| 43 | assert.equal(parseGrant(form({ target: "user", name: "ada", amount: "5", note: "" })).ok, false); | |
| 44 | }); | |
| 45 | ||
| 46 | test("a minted invite is for one address, or for anyone", () => { | |
| 47 | assert.deepEqual(parseMintEmail(""), { ok: true, value: null }); | |
| 48 | assert.deepEqual(parseMintEmail(" Ada@Example.com "), { ok: true, value: "ada@example.com" }); | |
| 49 | assert.equal(parseMintEmail("ada@").ok, false); | |
| 50 | }); | |
| 51 | ||
| 52 | test("every outcome has words", () => { | |
| 53 | for (const key of ["approved", "dismissed", "revoked", "granted"]) assert.ok(INVITES_DONE[key]); | |
| 54 | }); | |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 55 | |
| 56 | test("several requests are decided at once, each once", () => { | |
| 57 | const ticked = (ids: string[]) => ({ getAll: (name: string) => (name === "ids" ? ids : []) }); | |
| 58 | assert.deepEqual(parseIds(ticked(["wl_01jb2k", "wl_01jb2m", "wl_01jb2k"])), { ok: true, value: ["wl_01jb2k", "wl_01jb2m"] }); | |
| 59 | assert.equal(parseIds(ticked([])).ok, false); | |
| 60 | assert.equal(parseIds(ticked(["inv_01jb2k", "wl_<script>"])).ok, false); | |
| 61 | const many = Array.from({ length: MAX_BULK + 1 }, (_, n) => `wl_${n.toString(36)}`); | |
| 62 | assert.equal(parseIds(ticked(many)).ok, false); | |
| 63 | assert.equal(parseIds(ticked(many.slice(0, MAX_BULK))).ok, true); | |
| 64 | }); | |
| 65 | ||
| 66 | test("an approval's note is optional and short", () => { | |
| 67 | assert.deepEqual(parseNote(" Welcome aboard. "), { ok: true, value: "Welcome aboard." }); | |
| 68 | assert.deepEqual(parseNote(""), { ok: true, value: null }); | |
| 69 | assert.deepEqual(parseNote(null), { ok: true, value: null }); | |
| 70 | assert.equal(parseNote("x".repeat(501)).ok, false); | |
| 71 | }); | |
| 72 | ||
| 73 | test("the flash says how many were decided", () => { | |
| 74 | assert.equal(doneMessage("approved", "3"), "Approved 3 requests. Each invite is on its way."); | |
| 75 | assert.equal(doneMessage("dismissed", "2"), "Dismissed 2 requests."); | |
| 76 | assert.equal(doneMessage("approved", null), INVITES_DONE.approved); | |
| 77 | assert.equal(doneMessage("approved", "1"), INVITES_DONE.approved); | |
| 78 | assert.equal(doneMessage("nope", "4"), null); | |
| 79 | assert.equal(doneMessage(null, null), null); | |
| 80 | }); |