UNPKG

sensai

Version:

Because even AI needs a master

172 lines (171 loc) 7.31 kB
// Utils "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _nodetest = /*#__PURE__*/ _interop_require_default(require("node:test")); const _nodeassert = /*#__PURE__*/ _interop_require_default(require("node:assert")); const _router = /*#__PURE__*/ _interop_require_default(require(".")); const _nodepath = require("node:path"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (0, _nodetest.default)("should find static route", async ()=>{ const { add, lookup } = await (0, _router.default)(); add("/api/route.get.ts"); const { resource, middlewares, path, params } = lookup("/api"); _nodeassert.default.equal(path, "/api"); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource["GET"].default; _nodeassert.default.equal(route, "/api/route.get.ts"); _nodeassert.default.equal(type, "route"); _nodeassert.default.deepEqual(middlewares, []); }); (0, _nodetest.default)("should find multiple static routes with same pathname", async ()=>{ const { add, lookup } = await (0, _router.default)(); add("/api/route.ts"); add("/api/route.post.ts"); add("/api/route.get.ts"); for (const method of [ "ANY", "GET", "POST" ]){ const { middlewares, resource, path, params } = lookup("/api"); _nodeassert.default.equal(path, "/api"); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource[method].default; _nodeassert.default.equal(route, `/api/route${method === "ANY" ? "" : `.${method.toLowerCase()}`}.ts`); _nodeassert.default.equal(type, "route"); _nodeassert.default.deepEqual(middlewares, []); } }); (0, _nodetest.default)("should find static route with middlewares", async ()=>{ const { add, lookup } = await (0, _router.default)(); add("/api/route.put.ts"); add("/api/authorizer.ts"); const { resource, middlewares, path, params } = lookup("/api"); _nodeassert.default.equal(path, "/api"); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource["PUT"].default; _nodeassert.default.equal(route, "/api/route.put.ts"); _nodeassert.default.equal(type, "route"); _nodeassert.default.deepEqual(middlewares, [ "/api/authorizer.ts" ]); }); (0, _nodetest.default)("should find static route with version", async ()=>{ const { add, lookup } = await (0, _router.default)(); add("/api/route.get.ts"); add("/api/@v2/route.get.ts"); add("/api/@v3/route.ts"); const versions = [ "default", "v2" ]; for (const version of versions){ const { middlewares, resource, path, params } = lookup("/api"); _nodeassert.default.equal(path, "/api"); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource["GET"][version]; _nodeassert.default.equal(route, `/api${version === "default" ? "" : "/@v2"}/route.get.ts`); _nodeassert.default.equal(type, "route"); _nodeassert.default.deepEqual(middlewares, []); } const { middlewares, resource, path, params } = lookup("/api"); _nodeassert.default.equal(path, "/api"); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource["ANY"]["v3"]; _nodeassert.default.equal(route, `/api/@v3/route.ts`); _nodeassert.default.equal(type, "route"); _nodeassert.default.deepEqual(middlewares, []); }); (0, _nodetest.default)("should return route path relative to a root directory", async ()=>{ const { add, lookup } = await (0, _router.default)("/hello/world"); add("/api/route.get.ts"); const { resource, middlewares, path, params } = lookup("/api"); _nodeassert.default.equal(path, "/api"); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource["GET"].default; _nodeassert.default.equal(route, "/hello/world/api/route.get.ts"); _nodeassert.default.equal(type, "route"); _nodeassert.default.deepEqual(middlewares, []); }); (0, _nodetest.default)("should remove static route", async ()=>{ const { add, lookup, remove } = await (0, _router.default)(); add("/api/route.get.ts"); add("/api/route.post.ts"); add("/api/hello/route.post.ts"); _nodeassert.default.equal(remove("/api/route.get.ts"), true); const { resource } = lookup("/api"); _nodeassert.default.equal(resource["GET"] == null, true); _nodeassert.default.equal(resource["POST"] != null, true); _nodeassert.default.equal(remove("/api/route.post.ts"), true); _nodeassert.default.equal(lookup("/api") == null, true); _nodeassert.default.equal(lookup("/api/hello") != null, true); }); (0, _nodetest.default)("should remove parametric routes", async ()=>{ const routes = [ "/api/[name]/route.get.ts", "/api/[...names]/route.get.ts", "/api/[[...names]]/route.get.ts" ]; for (const route of routes){ const { add, lookup, remove } = await (0, _router.default)(); add(route); _nodeassert.default.equal(remove(route), true); _nodeassert.default.equal(lookup("/api/olivier") == null, true); } }); (0, _nodetest.default)("should delete folder of routes", async ()=>{ const { add, lookup, prune } = await (0, _router.default)(); add("/api/hello/route.get.ts"); add("/api/hello/route.post.ts"); add("/api/hello/[name]/route.get.ts"); _nodeassert.default.equal(lookup("/api/hello") != null, true); _nodeassert.default.equal(lookup("/api/hello/olivier") != null, true); _nodeassert.default.equal(prune("/api/hello"), true); _nodeassert.default.equal(lookup("/api/hello") == null, true); _nodeassert.default.equal(lookup("/api/hello/olivier") == null, true); }); (0, _nodetest.default)("should add an agent prompt", async ()=>{ const { add, lookup } = await (0, _router.default)(); const filenames = [ "/api/prompt.md", "/api/hello/prompt.md", "/api/hello/world/prompt.md" ]; for (const file of filenames){ add(file); const url = (0, _nodepath.dirname)(file); const { resource, middlewares, path, params } = lookup(url); _nodeassert.default.equal(path, url); _nodeassert.default.deepEqual(params, {}); const { route, type } = resource["ANY"].default; _nodeassert.default.equal(route, file); _nodeassert.default.equal(type, "prompt"); _nodeassert.default.deepEqual(middlewares, []); } }); // TODO add tests for prompt.{ts, js, json, yml} (0, _nodetest.default)("should add tools", async ()=>{ const { add, lookup } = await (0, _router.default)(); add("/api/tool.hello.ts"); add("/api/tool.weather.ts"); // test the tools file are added no matter what _nodeassert.default.equal(lookup("/api") == null, true); add("/api/prompt.md"); const { tool } = lookup("/api").resource; _nodeassert.default.deepEqual(tool.sort((a, b)=>a.name.localeCompare(b.name)), [ { name: "hello", path: "/api/tool.hello.ts" }, { name: "weather", path: "/api/tool.weather.ts" } ].sort((a, b)=>a.name.localeCompare(b.name))); });