|
|
@@ -0,0 +1,47 @@
|
|
|
+import { afterEach, describe, expect, test } from "bun:test"
|
|
|
+import { Installation } from "../../src/installation"
|
|
|
+
|
|
|
+const fetch0 = globalThis.fetch
|
|
|
+
|
|
|
+afterEach(() => {
|
|
|
+ globalThis.fetch = fetch0
|
|
|
+})
|
|
|
+
|
|
|
+describe("installation", () => {
|
|
|
+ test("reads release version from GitHub releases", async () => {
|
|
|
+ globalThis.fetch = (async () =>
|
|
|
+ new Response(JSON.stringify({ tag_name: "v1.2.3" }), {
|
|
|
+ status: 200,
|
|
|
+ headers: { "content-type": "application/json" },
|
|
|
+ })) as unknown as typeof fetch
|
|
|
+
|
|
|
+ expect(await Installation.latest("unknown")).toBe("1.2.3")
|
|
|
+ })
|
|
|
+
|
|
|
+ test("reads scoop manifest versions", async () => {
|
|
|
+ globalThis.fetch = (async () =>
|
|
|
+ new Response(JSON.stringify({ version: "2.3.4" }), {
|
|
|
+ status: 200,
|
|
|
+ headers: { "content-type": "application/json" },
|
|
|
+ })) as unknown as typeof fetch
|
|
|
+
|
|
|
+ expect(await Installation.latest("scoop")).toBe("2.3.4")
|
|
|
+ })
|
|
|
+
|
|
|
+ test("reads chocolatey feed versions", async () => {
|
|
|
+ globalThis.fetch = (async () =>
|
|
|
+ new Response(
|
|
|
+ JSON.stringify({
|
|
|
+ d: {
|
|
|
+ results: [{ Version: "3.4.5" }],
|
|
|
+ },
|
|
|
+ }),
|
|
|
+ {
|
|
|
+ status: 200,
|
|
|
+ headers: { "content-type": "application/json" },
|
|
|
+ },
|
|
|
+ )) as unknown as typeof fetch
|
|
|
+
|
|
|
+ expect(await Installation.latest("choco")).toBe("3.4.5")
|
|
|
+ })
|
|
|
+})
|