const assert = require("node:assert/strict"); const test = require("node:test"); const generateVersionInfo = require("../src/_data/versionInfo"); const { validateVersionInfo } = require("../scripts/validate-version-info"); const VALID_XML = ` 1.411 1.41.1 Hotfix https://github.com/praktimarc/kst4contest/releases/tag/v1.41.1 nothing 1.41.1 2026-07-08 Hotfix Text input handling `; test("accepts a complete update feed", () => { const result = validateVersionInfo(VALID_XML, "v1.41.1"); assert.equal(result.semanticVersion, "1.41.1"); assert.equal(result.changeLogEntries, 1); }); test("rejects the former empty fallback", () => { assert.throws( () => validateVersionInfo( '' + "" ), /empty or implausibly small/ ); }); test( "rejects a feed which does not contain " + "the expected Stable release", () => { assert.throws( () => validateVersionInfo( VALID_XML, "v1.42.0" ), /does not match expected release/ ); } ); test( "aborts generation when GitHub rejects " + "the API request", async () => { const originalFetch = global.fetch; global.fetch = async () => ({ ok: false, status: 401, headers: { get: () => null } }); try { await assert.rejects( generateVersionInfo(), /website build has been aborted.*HTTP 401/i ); } finally { global.fetch = originalFetch; } } );