Skip to main content
Glama

reddit-mcp-server

search-tools.test.ts2.81 kB
import { describe, it, expect, vi, beforeEach } from "vitest" import { searchReddit } from "../search-tools" import { getRedditClient } from "../../client/reddit-client" import { UserError } from "fastmcp" vi.mock("../../client/reddit-client") describe("searchReddit", () => { const mockRedditClient = { searchReddit: vi.fn(), } beforeEach(() => { vi.clearAllMocks() vi.mocked(getRedditClient).mockReturnValue(mockRedditClient as any) }) it("should search Reddit with default parameters", async () => { const mockPosts = [ { id: "test1", title: "Test Post 1", author: "testuser1", subreddit: "testsubreddit", score: 100, upvoteRatio: 0.95, numComments: 10, createdUtc: 1700000000, selftext: "This is a test post", permalink: "/r/testsubreddit/comments/test1", over18: false, spoiler: false, }, ] mockRedditClient.searchReddit.mockResolvedValue(mockPosts) const result = await searchReddit({ query: "test query" }) expect(mockRedditClient.searchReddit).toHaveBeenCalledWith("test query", { subreddit: undefined, sort: "relevance", timeFilter: "all", limit: 10, type: "link", }) expect(result.content).toHaveLength(1) expect(result.content[0].type).toBe("text") expect(result.content[0].text).toContain('Reddit Search Results for: "test query"') expect(result.content[0].text).toContain("Test Post 1") }) it("should search within a specific subreddit", async () => { mockRedditClient.searchReddit.mockResolvedValue([]) await searchReddit({ query: "test", subreddit: "programming", sort: "top", time_filter: "week", limit: 5, type: "link", }) expect(mockRedditClient.searchReddit).toHaveBeenCalledWith("test", { subreddit: "programming", sort: "top", timeFilter: "week", limit: 5, type: "link", }) }) it("should throw error if Reddit client is not initialized", async () => { vi.mocked(getRedditClient).mockReturnValue(null) await expect(searchReddit({ query: "test" })).rejects.toThrow(new UserError("Reddit client not initialized")) }) it("should throw error if query is empty", async () => { await expect(searchReddit({ query: "" })).rejects.toThrow(new UserError("Search query cannot be empty")) await expect(searchReddit({ query: " " })).rejects.toThrow(new UserError("Search query cannot be empty")) }) it("should handle search errors", async () => { mockRedditClient.searchReddit.mockRejectedValue(new Error("API Error")) await expect(searchReddit({ query: "test" })).rejects.toThrow( new UserError("Failed to search Reddit: Error: API Error"), ) }) })

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/jordanburke/reddit-mcp-server'

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