import { describe, it, expect } from "vitest";
import { analyzeComplexityHandler, securityScanHandler } from "./quality.js";
describe("Quality Tools", () => {
describe("analyzeComplexityHandler", () => {
it("should calculate complexity", () => {
const code = `
function test() {
if (a) {
if (b) { return; }
}
}
`;
const result = analyzeComplexityHandler({ code, language: "javascript" });
expect(result.content[0].text).toContain("Cyclomatic Complexity");
expect(result.content[0].text).toContain("Nesting Depth");
});
it("should warn for high complexity", () => {
// Generate complex code with newlines to trigger per-line analysis
const code = "if(a){}\n".repeat(25);
const result = analyzeComplexityHandler({ code, language: "javascript" });
expect(result.content[0].text).toContain("Refactor Needed");
});
});
describe("securityScanHandler", () => {
it("should detect secrets", () => {
const code = "const password = 'supersecretpassword123456';";
const result = securityScanHandler({
code,
language: "javascript",
focus: "all",
});
expect(result.content[0].text).toContain("Hardcoded secret");
});
it("should detect sql injection", () => {
const code = "execute('SELECT * FROM users WHERE id = ' + id)";
const result = securityScanHandler({
code,
language: "javascript",
focus: "all",
});
expect(result.content[0].text).toContain("SQL Injection");
});
it("should pass safe code", () => {
const code = "console.log('Hello');";
const result = securityScanHandler({
code,
language: "javascript",
focus: "all",
});
expect(result.content[0].text).toContain("No obvious issues detected");
});
});
});