@traversets/code-extractor
Version:
The TypeScript Code Extractor and Analyzer can be handy for RAG (Retrieval-Augmented Generation) systems for codebases. It provides a detailed and structured representation of the codebase that can be converted into embeddings, enabling more effective adv
151 lines • 6.21 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const https = __importStar(require("https"));
const http_service_1 = require("./http-service");
jest.mock("https");
jest.mock("../logger");
describe("HttpClient", () => {
let httpClient;
let mockRequest;
let mockResponse;
beforeEach(() => {
httpClient = new http_service_1.HttpClient();
mockRequest = jest.fn();
mockResponse = {
on: jest.fn(),
statusCode: 200,
};
https.request.mockImplementation((options, callback) => {
callback(mockResponse);
return {
on: jest.fn(),
write: jest.fn(),
end: jest.fn(),
};
});
});
afterEach(() => {
jest.clearAllMocks();
});
describe("get", () => {
it("Should send a Get request and return passed data", async () => {
const mockData = { key: "value" };
mockResponse.on = jest.fn().mockImplementation((event, callback) => {
if (event === "data")
callback(JSON.stringify(mockData));
if (event === "end")
callback();
});
const result = await httpClient.get({}, { path: "/test" });
expect(https.request).toHaveBeenCalledWith(expect.objectContaining({
method: "GET",
path: "/test",
}), expect.any(Function));
expect(result).toEqual(mockData);
});
});
describe("post", () => {
it("should send a POST request with payload and return parsed data", async () => {
const mockPayload = { data: "test" };
const mockData = { created: true };
mockResponse.on = jest.fn().mockImplementation((event, callback) => {
if (event === "data")
callback(JSON.stringify(mockData));
if (event === "end")
callback();
});
const result = await httpClient.post(mockPayload, { path: "/test" });
expect(https.request).toHaveBeenCalledWith(expect.objectContaining({
method: "POST",
path: "/test",
}), expect.any(Function));
expect(result).toEqual(mockData);
});
});
describe("put", () => {
it("should send a PUT request with payload and return parsed data", async () => {
const mockPayload = { data: "test" };
mockResponse.on = jest.fn().mockImplementation((event, callback) => {
if (event === "data")
callback(JSON.stringify(mockResponse));
if (event === "end")
callback();
});
const result = await httpClient.put(mockPayload, { path: "/test" });
expect(https.request).toHaveBeenCalledWith(expect.objectContaining({
method: "PUT",
path: "/test",
}), expect.any(Function));
expect(result).toEqual({ statusCode: 200 });
});
});
describe("delete", () => {
it("should send a DELETE request and return parsed data", async () => {
mockResponse.on = jest.fn().mockImplementation((event, callback) => {
if (event === "data")
callback(JSON.stringify(mockResponse));
if (event === "end")
callback();
});
const result = await httpClient.delete({ path: "/test" });
expect(https.request).toHaveBeenCalledWith(expect.objectContaining({
method: "DELETE",
path: "/test",
}), expect.any(Function));
expect(result).toEqual({ statusCode: 200 });
});
});
describe("error handling", () => {
it("should reject the promise if status code is 500 or greater", async () => {
mockResponse.statusCode = 500;
mockResponse.on = jest.fn().mockImplementation((event, callBack) => {
if (event === "end")
callBack();
});
await expect(httpClient.get({}, { path: "/test" })).rejects.toThrow("Request failed with status code 500");
});
it("should reject the promise if JSON parsing fails", async () => {
mockResponse.on = jest.fn().mockImplementation((event, callback) => {
if (event === "data")
callback("Invalid JSON");
if (event === "end")
callback();
});
await expect(httpClient.get({}, { path: "/test" })).rejects.toThrow("Failed to parse response data");
});
});
// describe("generateHeader", () => {
// it("should return the correct default headers", () => {
// const headers = httpClient.generateHeader();
// expect(headers).toEqual({
// "Content-Type": "application/json",
// connection: "keep-alive",
// accept: "*/*",
// });
// });
// });
});
//# sourceMappingURL=http-service.spec.js.map
;