sensai
Version:
Because even AI needs a master
172 lines (171 loc) • 7.31 kB
JavaScript
// 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)));
});