delete-module
Delete a qTest test module by its numeric ID. Automatically removes all child modules and test cases.
Instructions
Test Design — delete a qTest test module by numeric id. Cascades to all child modules and test cases automatically.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Numeric project ID as string | |
| id | Yes | Numeric module ID to delete |
Implementation Reference
- Main handler function that deletes a module by ID. Fetches module info first, then recursively deletes all children and test cases, then deletes the module itself.
export async function deleteModule( args: DeleteModuleArgs ): Promise<DeleteModuleResult> { const { projectId, id } = args const raw = await qtestFetch(config, projectId, `/modules/${id}`, 'GET') const moduleInfo = raw as QTestModule await deleteModuleRecursive(projectId, id) return { deleted: true, module: moduleInfo } } - Recursive helper that deletes child modules and their test cases before deleting the module.
async function deleteModuleRecursive(projectId: string, id: number): Promise<void> { const childrenRaw = await qtestFetch(config, projectId, `/modules?parentId=${id}&size=100`, 'GET') const children = extractArray<QTestModule>(childrenRaw) for (const child of children) { await deleteModuleRecursive(projectId, child.id) } let page = 1 while (true) { const casesRaw = await qtestFetch( config, projectId, `/test-cases?parentId=${id}&parentType=module&page=${page}&size=100`, 'GET' ) const cases = extractArray<QTestTestCase>(casesRaw) for (const tc of cases) { await qtestFetch(config, projectId, `/test-cases/${tc.id}`, 'DELETE') } if (cases.length < 100) break page++ } await qtestFetch(config, projectId, `/modules/${id}`, 'DELETE') } - Input type definition for deleteModule: projectId (string) and id (number).
export interface DeleteModuleArgs { projectId: string id: number } - Output type definition for deleteModule: deleted flag and module info.
export interface DeleteModuleResult { deleted: true module: QTestModule } - src/server.ts:169-183 (registration)Registration of the 'delete-module' tool on the MCP server with input schema (projectId: string, id: number) and handler calling deleteModule.
server.registerTool( 'delete-module', { description: 'Test Design — delete a qTest test module by numeric id. Cascades to all child modules and test cases automatically.', inputSchema: { projectId: z.string().describe('Numeric project ID as string'), id: z.number().int().describe('Numeric module ID to delete'), }, }, async ({ projectId, id }) => { const result = await deleteModule({ projectId, id }) return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] } } )