fix(ui,config): improve activity feed parsing and test isolation
This commit is contained in:
1 parent
96d1ce9029
commit
de45e481da
6 files changed
+143
-6
No files matched your search
@@ -0,0 +1,62 @@
|
||||
import { test, expect } from "bun:test";
|
||||
import { readFileSync } from "fs";
|
||||
|
||||
test("dashboard parses and renders activity payload", () => {
|
||||
// 1. Read dashboard.js (the transpiled JavaScript)
|
||||
let code = readFileSync("server/src/dashboard.js", "utf8");
|
||||
|
||||
// Remove the trailing initialization calls that cause side-effects
|
||||
code = code.replace("loadVersion();", "");
|
||||
code = code.replace("loadActivityHistory();", "");
|
||||
code = code.replace("setupWS();", "");
|
||||
|
||||
// 2. Mock necessary DOM and Browser globals
|
||||
const context = {
|
||||
window: {},
|
||||
document: {
|
||||
documentElement: {},
|
||||
getElementById: () => null,
|
||||
createElement: () => ({ classList: { add: () => {} }, prepend: () => {}, removeChild: () => {}, children: [] }),
|
||||
addEventListener: () => {},
|
||||
},
|
||||
location: { protocol: "http:" },
|
||||
MutationObserver: class { observe() {} },
|
||||
vis: { DataSet: class {}, Network: class {} },
|
||||
console: console,
|
||||
fetch: () => Promise.resolve({ json: () => Promise.resolve({}) }),
|
||||
WebSocket: class { addEventListener() {} },
|
||||
setTimeout: setTimeout,
|
||||
Date: Date,
|
||||
localStorage: { getItem: () => null, setItem: () => {} },
|
||||
};
|
||||
|
||||
// 3. Create a function that executes the code
|
||||
const extractFn = new Function(...Object.keys(context), code + `
|
||||
return {
|
||||
parseActivityPayload,
|
||||
handleIncomingActivity,
|
||||
requestDomainRefresh
|
||||
};
|
||||
`);
|
||||
|
||||
const exports = extractFn(...Object.values(context));
|
||||
|
||||
// 4. Test parseActivityPayload normal case
|
||||
const payload = {
|
||||
category: "CODE_CHANGE",
|
||||
message: "Refactored live activity UI",
|
||||
};
|
||||
|
||||
const html = exports.parseActivityPayload(payload);
|
||||
expect(html).toContain("CODE_CHANGE");
|
||||
expect(html).toContain("Refactored live activity UI");
|
||||
|
||||
// 5. Test parseActivityPayload with resources/updated
|
||||
// It should handle fallback correctly if we pass it directly
|
||||
const resPayload = {
|
||||
method: "notifications/resources/updated",
|
||||
params: { uri: "memory://tasks/active" }
|
||||
};
|
||||
const htmlRes = exports.parseActivityPayload(resPayload);
|
||||
expect(htmlRes).toContain("memory://tasks/active");
|
||||
});
|
||||
Reference in new issue
Block a user