| 1 | import { test } from "node:test"; |
| 2 | import assert from "node:assert/strict"; |
| 3 | import { downloadPaneFromURL, downloadURLForPane, releaseChannelFromURL } from "./download-link.js"; |
| 4 | |
| 5 | test("desktop updater deep link selects the desktop pane", () => { |
| 6 | assert.equal(downloadPaneFromURL("https://reasonix.io/?download=desktop#start"), "desktop"); |
| 7 | }); |
| 8 | |
| 9 | test("plain install links preserve the default pane", () => { |
| 10 | assert.equal(downloadPaneFromURL("https://reasonix.io/#start"), ""); |
| 11 | assert.equal(downloadPaneFromURL("https://reasonix.io/?download=desktop"), ""); |
| 12 | }); |
| 13 | |
| 14 | test("recognized download panes are strict", () => { |
| 15 | assert.equal(downloadPaneFromURL("/?download=brew#start"), "brew"); |
| 16 | assert.equal(downloadPaneFromURL("/?download=npm#start"), "npm"); |
| 17 | assert.equal(downloadPaneFromURL("/?download=vscode#start"), "vscode"); |
| 18 | assert.equal(downloadPaneFromURL("/?download=cli#start"), "cli"); |
| 19 | assert.equal(downloadPaneFromURL("/?download=DESKTOP#start"), ""); |
| 20 | assert.equal(downloadPaneFromURL("/?download=unknown#start"), ""); |
| 21 | assert.equal(downloadPaneFromURL("not a url", "not a base"), ""); |
| 22 | }); |
| 23 | |
| 24 | test("legacy release channel deep links never select a public channel", () => { |
| 25 | assert.equal(releaseChannelFromURL("/?download=desktop&channel=preview#start"), ""); |
| 26 | assert.equal(releaseChannelFromURL("/?download=cli&channel=stable#start"), ""); |
| 27 | assert.equal(releaseChannelFromURL("/?download=desktop&channel=canary#start"), ""); |
| 28 | }); |
| 29 | |
| 30 | test("download tab navigation keeps the pane and removes legacy channels", () => { |
| 31 | assert.equal( |
| 32 | downloadURLForPane("https://reasonix.io/?download=desktop&channel=preview#start", "cli", "stable"), |
| 33 | "https://reasonix.io/?download=cli#start", |
| 34 | ); |
| 35 | assert.equal( |
| 36 | downloadURLForPane("https://reasonix.io/?download=desktop&channel=preview#start", "npm", "preview"), |
| 37 | "https://reasonix.io/?download=npm#start", |
| 38 | ); |
| 39 | assert.equal(downloadURLForPane("https://reasonix.io/", "desktop", "preview"), |
| 40 | "https://reasonix.io/?download=desktop#start"); |
| 41 | assert.equal(downloadURLForPane("https://reasonix.io/", "unknown", "stable"), ""); |
| 42 | }); |
| 43 |