Skip to content

Commit 0f17ed3

Browse files
Feat: Add project and folder creation tests with error handling
1 parent e215cd5 commit 0f17ed3

File tree

1 file changed

+75
-5
lines changed

1 file changed

+75
-5
lines changed

tests/tools/testmanagement.test.ts

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1+
import { createProjectOrFolderTool } from '../../src/tools/testmanagement';
2+
import { createProjectOrFolder } from '../../src/tools/testmanagement-utils/create-project-folder';
13
import { createTestCaseTool } from '../../src/tools/testmanagement';
24
import { createTestCase, sanitizeArgs, TestCaseCreateRequest } from '../../src/tools/testmanagement-utils/create-testcase';
35

4-
// Mock the dependencies
6+
// Mock dependencies
7+
jest.mock('../../src/tools/testmanagement-utils/create-project-folder', () => ({
8+
createProjectOrFolder: jest.fn(),
9+
CreateProjFoldSchema: {
10+
parse: (args: any) => args,
11+
shape: {},
12+
},
13+
}));
514
jest.mock('../../src/tools/testmanagement-utils/create-testcase', () => ({
615
createTestCase: jest.fn(),
716
sanitizeArgs: jest.fn((args) => args),
@@ -36,7 +45,7 @@ describe('createTestCaseTool', () => {
3645
custom_fields: { priority: 'high' },
3746
};
3847

39-
const mockResponse = {
48+
const mockTestCaseResponse = {
4049
data: {
4150
success: true,
4251
test_case: {
@@ -48,7 +57,7 @@ describe('createTestCaseTool', () => {
4857
};
4958

5059
it('should successfully create a test case', async () => {
51-
(createTestCase as jest.Mock).mockResolvedValue(mockResponse);
60+
(createTestCase as jest.Mock).mockResolvedValue(mockTestCaseResponse);
5261

5362
const result = await createTestCaseTool(validArgs);
5463

@@ -58,7 +67,7 @@ describe('createTestCaseTool', () => {
5867
expect(result.content[1].text).toContain('"title": "Sample Test Case"');
5968
});
6069

61-
it('should handle API errors gracefully', async () => {
70+
it('should handle API errors while creating test case', async () => {
6271
(createTestCase as jest.Mock).mockRejectedValue(new Error('API Error'));
6372

6473
const result = await createTestCaseTool(validArgs);
@@ -67,7 +76,7 @@ describe('createTestCaseTool', () => {
6776
expect(result.content[0].text).toContain('Failed to create test case: API Error');
6877
});
6978

70-
it('should handle unknown error types', async () => {
79+
it('should handle unknown error while creating test case', async () => {
7180
(createTestCase as jest.Mock).mockRejectedValue('unexpected');
7281

7382
const result = await createTestCaseTool(validArgs);
@@ -76,3 +85,64 @@ describe('createTestCaseTool', () => {
7685
expect(result.content[0].text).toContain('Unknown error');
7786
});
7887
});
88+
89+
describe('createProjectOrFolderTool', () => {
90+
beforeEach(() => {
91+
jest.clearAllMocks();
92+
});
93+
94+
const validProjectArgs = {
95+
project_name: 'My New Project',
96+
project_description: 'This is a test project',
97+
};
98+
99+
const validFolderArgs = {
100+
project_identifier: 'proj-123',
101+
folder_name: 'My Test Folder',
102+
folder_description: 'This is a folder under project',
103+
};
104+
105+
const mockProjectResponse = {
106+
content: [{ type: 'text', text: 'Project created with identifier=proj-123' }],
107+
};
108+
109+
const mockFolderResponse = {
110+
content: [{ type: 'text', text: 'Folder created: ID=fold-123, name="My Folder" in project proj-123' }],
111+
};
112+
113+
it('should successfully create a project', async () => {
114+
(createProjectOrFolder as jest.Mock).mockResolvedValue(mockProjectResponse);
115+
116+
const result = await createProjectOrFolderTool(validProjectArgs);
117+
118+
expect(createProjectOrFolder).toHaveBeenCalledWith(validProjectArgs);
119+
expect(result.content[0].text).toContain('Project created with identifier=proj-123');
120+
});
121+
122+
it('should successfully create a folder', async () => {
123+
(createProjectOrFolder as jest.Mock).mockResolvedValue(mockFolderResponse);
124+
125+
const result = await createProjectOrFolderTool(validFolderArgs);
126+
127+
expect(createProjectOrFolder).toHaveBeenCalledWith(validFolderArgs);
128+
expect(result.content[0].text).toContain('Folder created: ID=fold-123');
129+
});
130+
131+
it('should handle error while creating project or folder', async () => {
132+
(createProjectOrFolder as jest.Mock).mockRejectedValue(new Error('Failed to create project/folder'));
133+
134+
const result = await createProjectOrFolderTool(validProjectArgs);
135+
136+
expect(result.isError).toBe(true);
137+
expect(result.content[0].text).toContain('Failed to create project/folder: Failed to create project/folder');
138+
});
139+
140+
it('should handle unknown error while creating project or folder', async () => {
141+
(createProjectOrFolder as jest.Mock).mockRejectedValue('some unknown error');
142+
143+
const result = await createProjectOrFolderTool(validProjectArgs);
144+
145+
expect(result.isError).toBe(true);
146+
expect(result.content[0].text).toContain('Failed to create project/folder: Unknown error');
147+
});
148+
});

0 commit comments

Comments
 (0)