Skip to main content
Glama
problem-services.test.ts4.41 kB
import { Credential, LeetCode, LeetCodeCN } from "leetcode-query"; import { describe, expect, it } from "vitest"; import { LeetCodeCNService } from "../../src/leetcode/leetcode-cn-service.js"; import { LeetCodeGlobalService } from "../../src/leetcode/leetcode-global-service.js"; import logger from "../../src/utils/logger.js"; describe("LeetCode Problem Services", () => { describe("LeetCodeGlobalService", () => { const credential = new Credential(); const leetCodeApi = new LeetCode(credential); const service = new LeetCodeGlobalService(leetCodeApi, credential); describe("fetchDailyChallenge", () => { it("should return daily challenge data", async () => { const result = await service.fetchDailyChallenge(); expect(result).toBeDefined(); expect(result.question).toBeDefined(); expect(result.question.title).toBeDefined(); expect(result.question.questionId).toBeDefined(); }, 30000); }); describe("fetchProblemSimplified", () => { it("should return simplified problem data", async () => { const titleSlug = "two-sum"; const result = await service.fetchProblemSimplified(titleSlug); expect(result).toBeDefined(); expect(result.titleSlug).toBe(titleSlug); expect(result.title).toBe("Two Sum"); expect(result.questionId).toBeDefined(); expect(result.content).toBeDefined(); expect(result.difficulty).toBeDefined(); expect(Array.isArray(result.topicTags)).toBe(true); expect(Array.isArray(result.codeSnippets)).toBe(true); expect(result.hints).toBeDefined(); if (result.similarQuestions) { expect(Array.isArray(result.similarQuestions)).toBe(true); } }, 30000); it("should handle invalid problems correctly", async () => { const invalidSlug = `invalid-problem-${Date.now()}`; await expect( service.fetchProblemSimplified(invalidSlug) ).rejects.toThrow(`Problem ${invalidSlug} not found`); }, 30000); }); }); describe("LeetCodeCNService", () => { const credential = new Credential(); const leetCodeApi = new LeetCodeCN(credential); const service = new LeetCodeCNService(leetCodeApi, credential); describe("fetchDailyChallenge", () => { it("should return daily challenge data", async () => { service.fetchDailyChallenge().then((result) => { expect(result).toBeDefined(); expect(result.question).toBeDefined(); expect(result.question.title).toBeDefined(); expect(result.question.questionId).toBeDefined(); }); }, 30000); }); describe("fetchProblemSimplified", () => { it("should return simplified problem data", async () => { const titleSlug = "two-sum"; const result = await service.fetchProblemSimplified(titleSlug); expect(result).toBeDefined(); expect(result.titleSlug).toBe(titleSlug); expect(result.questionId).toBeDefined(); expect(result.title).toBeDefined(); expect(result.content).toBeDefined(); expect(result.difficulty).toBeDefined(); expect(Array.isArray(result.topicTags)).toBe(true); expect(Array.isArray(result.codeSnippets)).toBe(true); expect(result.hints).toBeDefined(); if (result.similarQuestions) { expect(Array.isArray(result.similarQuestions)).toBe(true); } logger.info( `Successfully fetched simplified data for ${titleSlug}` ); }, 30000); it("should handle invalid problems correctly", async () => { const invalidSlug = `invalid-problem-${Date.now()}`; await expect( service.fetchProblemSimplified(invalidSlug) ).rejects.toBeDefined(); }, 30000); }); }); });

Latest Blog Posts

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/jinzcdev/leetcode-mcp-server'

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