Skip to main content
Glama
helpers.ts•3.23 kB
import { Project, Task } from '@prisma/client'; import prisma from '../config/database'; // Note: This prisma is from main config, but setup.ts overrides for tests import request from 'supertest'; import { app } from '../index'; import { TestData } from './utils'; // New import import { serializeProject, serializeTask, SerializedProject, SerializedTask, } from '../utils/dateUtils'; /** * Create a test project */ export async function createTestProject( override: Partial<Project> = {}, ): Promise<SerializedProject> { const projectData = TestData.project(override); const project = await prisma.project.create({ data: projectData }); return serializeProject(project); } /** * Create a test task */ export async function createTestTask( projectId: string, override: Partial<Task> = {}, ): Promise<SerializedTask> { // Verify project exists first const project = await prisma.project.findUnique({ where: { id: projectId } }); if (!project) { // If project doesn't exist, create it const projectData = TestData.project(); const newProject = await prisma.project.create({ data: projectData }); projectId = newProject.id; } const taskData = TestData.task(projectId, override); const task = await prisma.task.create({ data: taskData }); return serializeTask(task); } /** * Create multiple test tasks */ export async function createTestTasks(projectId: string, count: number): Promise<SerializedTask[]> { // Verify project exists first const project = await prisma.project.findUnique({ where: { id: projectId } }); if (!project) { throw new Error(`Project with ID ${projectId} not found`); } return Promise.all( Array.from({ length: count }, (_, i) => createTestTask(projectId, { title: `Test Task ${i + 1}`, assignedTo: `user${i + 1}@example.com`, }), ), ); } /** * Clean up test data */ export async function cleanupTestData(): Promise<void> { // Delete tasks first to avoid foreign key constraints await prisma.task.deleteMany(); await prisma.project.deleteMany(); } /** * API test helpers */ export const api = { // Project endpoints projects: { getAll: (query = {}) => request(app).get('/api/projects').query(query), getById: (id: string) => request(app).get(`/api/projects/${id}`), create: (data: Partial<Project>) => request(app).post('/api/projects').send(data), update: (id: string, data: Partial<Project>) => request(app).put(`/api/projects/${id}`).send(data), delete: (id: string) => request(app).delete(`/api/projects/${id}`), }, // Task endpoints tasks: { getAll: (query = {}) => request(app).get('/api/tasks').query(query), getById: (id: string) => request(app).get(`/api/tasks/${id}`), create: (data: Partial<Task>) => request(app).post('/api/tasks').send(data), update: (id: string, data: Partial<Task>) => request(app).put(`/api/tasks/${id}`).send(data), delete: (id: string) => request(app).delete(`/api/tasks/${id}`), getByProject: (projectId: string) => request(app).get(`/api/tasks/project/${projectId}`), }, }; // Re-export utilities for convenience export { TestData, Assertions, MockUtils, TestEnv } from './utils';

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/jatinderbhola/mcp-taskflow-tracker-api'

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