Skip to main content
Glama

mcp-github-project-manager

test-utils.ts.new4.46 kB
import { ResourceStatus, ResourceType } from "../domain/resource-types"; import { Issue, Milestone, Project, Sprint, CreateIssue, CreateProject, CreateMilestone, CreateSprint, ProjectView, CustomField } from "../domain/types"; export class TestFactory { static createProject(overrides: Partial<CreateProject> = {}): CreateProject { return { title: "Test Project", shortDescription: "A test project", owner: "test-owner", visibility: "private", views: [], fields: [], ...overrides }; } static createMilestone(overrides: Partial<CreateMilestone> = {}): CreateMilestone { return { title: "Test Milestone", description: "A test milestone", dueDate: this.futureDate(30), ...overrides }; } static createIssue(overrides: Partial<CreateIssue> = {}): CreateIssue { return { title: "Test Issue", description: "A test issue", assignees: [], labels: [], ...overrides }; } static createSprint(overrides: Partial<CreateSprint> = {}): CreateSprint { const startDate = new Date(); const endDate = new Date(startDate); endDate.setDate(endDate.getDate() + 14); return { title: "Test Sprint", description: "A test sprint", startDate: startDate.toISOString(), endDate: endDate.toISOString(), status: ResourceStatus.ACTIVE, issues: [], ...overrides }; } static createProjectView(overrides: Partial<ProjectView> = {}): ProjectView { return { id: `view-${Date.now()}`, name: "Test View", layout: "board", ...overrides }; } static createCustomField(overrides: Partial<CustomField> = {}): CustomField { return { id: `field-${Date.now()}`, name: "Test Field", type: "text", options: [], ...overrides }; } static completeProject(data: CreateProject = this.createProject()): Project { return { id: `proj-${Date.now()}`, title: data.title, description: data.shortDescription || "", owner: data.owner, number: 1, url: `https://github.com/${data.owner}/projects/1`, fields: data.fields || [], views: data.views || [], closed: false, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), status: ResourceStatus.ACTIVE, visibility: data.visibility || "private", version: 1 }; } static completeMilestone(data: CreateMilestone = this.createMilestone()): Milestone { return { id: `milestone-${Date.now()}`, number: 1, title: data.title, description: data.description, dueDate: data.dueDate, status: ResourceStatus.ACTIVE, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), url: `https://github.com/test-owner/test-repo/milestone/1`, progress: { percent: 0, complete: 0, total: 0 } }; } static completeIssue(data: CreateIssue = this.createIssue()): Issue { return { id: `issue-${Date.now()}`, number: 1, title: data.title, description: data.description, status: ResourceStatus.ACTIVE, assignees: data.assignees || [], labels: data.labels || [], milestoneId: data.milestoneId, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), url: `https://github.com/test-owner/test-repo/issues/1` }; } static completeSprint(data: CreateSprint = this.createSprint()): Sprint { return { id: `sprint-${Date.now()}`, title: data.title, description: data.description, startDate: data.startDate, endDate: data.endDate, status: data.status || ResourceStatus.ACTIVE, issues: data.issues || [], createdAt: new Date().toISOString(), updatedAt: new Date().toISOString() }; } static futureDate(daysFromNow: number): string { const date = new Date(); date.setDate(date.getDate() + daysFromNow); return date.toISOString(); } static pastDate(daysAgo: number): string { const date = new Date(); date.setDate(date.getDate() - daysAgo); return date.toISOString(); } static randomId(): string { return Math.random().toString(36).substring(2, 15); } static mockGitHubResponse<T>(data: T): Promise<{ data: T }> { return Promise.resolve({ data }); } }

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/kunwarVivek/mcp-github-project-manager'

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