UNPKG

creatrip-agent-rules-builder

Version:

Unified converter for AI coding agent rules across Cursor, Windsurf, and Claude

49 lines (40 loc) 1.69 kB
import * as fs from "fs"; import * as path from "path"; import { parseAgentRulesFile, getDefaultRulesFilePath } from "../src/parser"; describe("Parser", () => { const testFilePath = path.join(__dirname, "fixtures", "test-rules.md"); describe("parseAgentRulesFile", () => { it("should parse markdown file with JSONC config", () => { const result = parseAgentRulesFile(testFilePath); expect(result.rules).toContain("# Test AI Rules"); expect(result.rules).toContain("## General Rules"); expect(result.rules).not.toContain("agent-rules-config"); expect(result.config.cursor).toBeDefined(); expect(result.config.cursor?.globs).toEqual(["*.ts", "*.tsx"]); expect(result.config.cursor?.description).toBe("Test rules for cursor"); }); it("should throw error for non-existent file", () => { expect(() => { parseAgentRulesFile("non-existent-file.md"); }).toThrow("파일을 찾을 수 없습니다"); }); it("should handle file without config", () => { const tempFile = path.join(__dirname, "temp-no-config.md"); fs.writeFileSync(tempFile, "# Simple Rules\n- Rule 1\n- Rule 2"); try { const result = parseAgentRulesFile(tempFile); expect(result.rules).toBe("# Simple Rules\n- Rule 1\n- Rule 2"); expect(result.config).toEqual({}); } finally { fs.unlinkSync(tempFile); } }); }); describe("getDefaultRulesFilePath", () => { it("should return correct default path", () => { const result = getDefaultRulesFilePath(); expect(result).toContain("AGENTS.md"); expect(path.isAbsolute(result)).toBe(true); }); }); });