-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest-team.js
More file actions
108 lines (94 loc) · 3.91 KB
/
test-team.js
File metadata and controls
108 lines (94 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const BASE_URL = 'http://localhost:8080/team';
let createdMemberId = null;
async function testTeamAPI() {
try {
console.log('🧪 Testing Team API...\n');
// 1. Get all team members (initial)
console.log('1️⃣ GET all team members:');
const getAllResponse = await axios.get(BASE_URL);
console.log(`✅ Found ${getAllResponse.data.length} team members\n`);
// 2. Create new team member
console.log('2️⃣ POST - Create new team member:');
const createData = {
displayName: 'Test User',
category: 'Employee',
role: 'Software Engineer',
department: 'Web',
education: 'B.Tech Computer Science',
email: 'test@example.com',
address: '123 Test Street',
social: JSON.stringify({
linkedIn: 'https://linkedin.com/in/testuser',
twitter: '@testuser'
})
};
const createResponse = await axios.post(BASE_URL, createData, {
headers: { 'Content-Type': 'application/json' }
});
createdMemberId = createResponse.data._id;
console.log(`✅ Created team member: ${createResponse.data.displayName}`);
console.log(` Member ID: ${createdMemberId}`);
console.log(` Member ID (custom): ${createResponse.data.memberId}\n`);
// 3. Get specific team member
console.log('3️⃣ GET team member by ID:');
const getOneResponse = await axios.get(`${BASE_URL}/${createdMemberId}`);
console.log(`✅ Retrieved: ${getOneResponse.data.displayName}\n`);
// 4. Update team member
console.log('4️⃣ PUT - Update team member:');
const updateData = {
displayName: 'Test User Updated',
role: 'Senior Software Engineer'
};
const updateResponse = await axios.put(`${BASE_URL}/${createdMemberId}`, updateData, {
headers: { 'Content-Type': 'application/json' }
});
console.log(`✅ Updated: ${updateResponse.data.displayName}`);
console.log(` New role: ${updateResponse.data.role}\n`);
// 5. Update status
console.log('5️⃣ PATCH - Update status:');
const statusResponse = await axios.patch(`${BASE_URL}/${createdMemberId}/status`,
{ status: 1 },
{ headers: { 'Content-Type': 'application/json' }}
);
console.log(`✅ Status updated to: ${statusResponse.data.status}\n`);
// 6. Delete team member
console.log('6️⃣ DELETE team member:');
const deleteResponse = await axios.delete(`${BASE_URL}/${createdMemberId}`);
console.log(`✅ ${deleteResponse.data.message}\n`);
// 7. Verify deletion
console.log('7️⃣ Verify deletion:');
try {
await axios.get(`${BASE_URL}/${createdMemberId}`);
console.log('❌ Team member still exists!\n');
} catch (err) {
if (err.response?.status === 404) {
console.log('✅ Team member successfully deleted\n');
} else {
throw err;
}
}
console.log('🎉 All tests passed!');
} catch (error) {
console.error('❌ Test failed:');
if (error.response) {
console.error(` Status: ${error.response.status}`);
console.error(` Error: ${JSON.stringify(error.response.data)}`);
} else {
console.error(` ${error.message}`);
}
// Cleanup if test failed
if (createdMemberId) {
try {
await axios.delete(`${BASE_URL}/${createdMemberId}`);
console.log('🧹 Cleaned up test data');
} catch (e) {
// Ignore cleanup errors
}
}
}
}
// Run tests
testTeamAPI();