Skip to main content
Glama

Memory Bank MCP Server

read-controller.test.ts3.41 kB
import { describe, expect, it, vi } from "vitest"; import { ReadRequest } from "../../../../src/presentation/controllers/read/protocols.js"; import { ReadController } from "../../../../src/presentation/controllers/read/read-controller.js"; import { NotFoundError, UnexpectedError, } from "../../../../src/presentation/errors/index.js"; import { makeReadFileUseCase, makeValidator } from "../../mocks/index.js"; const makeSut = () => { const validatorStub = makeValidator<ReadRequest>(); const readFileUseCaseStub = makeReadFileUseCase(); const sut = new ReadController(readFileUseCaseStub, validatorStub); return { sut, validatorStub, readFileUseCaseStub, }; }; describe("ReadController", () => { it("should call validator with correct values", async () => { const { sut, validatorStub } = makeSut(); const validateSpy = vi.spyOn(validatorStub, "validate"); const request = { body: { projectName: "any_project", fileName: "any_file", }, }; await sut.handle(request); expect(validateSpy).toHaveBeenCalledWith(request.body); }); it("should return 400 if validator returns an error", async () => { const { sut, validatorStub } = makeSut(); vi.spyOn(validatorStub, "validate").mockReturnValueOnce( new Error("any_error") ); const request = { body: { projectName: "any_project", fileName: "any_file", }, }; const response = await sut.handle(request); expect(response).toEqual({ statusCode: 400, body: new Error("any_error"), }); }); it("should call ReadFileUseCase with correct values", async () => { const { sut, readFileUseCaseStub } = makeSut(); const readFileSpy = vi.spyOn(readFileUseCaseStub, "readFile"); const request = { body: { projectName: "any_project", fileName: "any_file", }, }; await sut.handle(request); expect(readFileSpy).toHaveBeenCalledWith({ projectName: "any_project", fileName: "any_file", }); }); it("should return 404 if ReadFileUseCase returns null", async () => { const { sut, readFileUseCaseStub } = makeSut(); vi.spyOn(readFileUseCaseStub, "readFile").mockResolvedValueOnce(null); const request = { body: { projectName: "any_project", fileName: "any_file", }, }; const response = await sut.handle(request); expect(response).toEqual({ statusCode: 404, body: new NotFoundError("any_file"), }); }); it("should return 500 if ReadFileUseCase throws", async () => { const { sut, readFileUseCaseStub } = makeSut(); vi.spyOn(readFileUseCaseStub, "readFile").mockRejectedValueOnce( new Error("any_error") ); const request = { body: { projectName: "any_project", fileName: "any_file", }, }; const response = await sut.handle(request); expect(response).toEqual({ statusCode: 500, body: new UnexpectedError(new Error("any_error")), }); }); it("should return 200 if valid data is provided", async () => { const { sut } = makeSut(); const request = { body: { projectName: "any_project", fileName: "any_file", }, }; const response = await sut.handle(request); expect(response).toEqual({ statusCode: 200, body: "file content", }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alioshr/memory-bank-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server