Skip to content

Commit acec5f3

Browse files
authored
Merge pull request #22 from NextStepFinalProject/NXD-24
Nxd 24 - Show Error Reason When Uploading A Resume
2 parents c709aa1 + 6953604 commit acec5f3

4 files changed

Lines changed: 25 additions & 9 deletions

File tree

nextstep-backend/src/controllers/resources_controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const createResumeResource = async (req: Request, res: Response) => {
5858
return res.status(201).send(resumeFilename);
5959
} catch (error) {
6060
if (error instanceof multer.MulterError || error instanceof TypeError) {
61-
return res.status(400).send(error.message);
61+
return res.status(400).send({ message: error.message });
6262
} else {
6363
handleError(error, res);
6464
}

nextstep-backend/src/openapi/swagger.yaml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -836,14 +836,24 @@ paths:
836836
'400':
837837
description: Bad request
838838
content:
839-
text/plain:
839+
application/json:
840+
schema:
841+
type: object
842+
properties:
843+
message:
844+
type: string
845+
description: Error message indicating the specific issue
846+
example: "File too large"
840847
examples:
841848
fileTooLarge:
842-
value: "File too large"
849+
value:
850+
message: "File too large"
843851
invalidFileType:
844-
value: "Invalid file type. Only PDF, DOC, DOCX and TXT/TEXT files are allowed"
852+
value:
853+
message: "Invalid file type. Only PDF, DOC, DOCX and TXT/TEXT files are allowed"
845854
noFileUploaded:
846-
value: "No file uploaded"
855+
value:
856+
message: "No file uploaded"
847857
'401':
848858
description: Unauthorized
849859
'500':

nextstep-backend/src/tests/resources_resumes.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ describe('Resume API Tests', () => {
143143
.attach('file', Buffer.from('invalid content'), { filename: 'test.png' })
144144
.expect(400);
145145

146-
expect(response.text).toBe('Invalid file type. Only PDF, DOC, DOCX and TXT/TEXT files are allowed.');
146+
expect(response.text).toBe(`{"message":"Invalid file type. Only PDF, DOC, DOCX and TXT/TEXT files are allowed."}`);
147147
});
148148

149149
it('should handle missing file', async () => {
@@ -152,7 +152,7 @@ describe('Resume API Tests', () => {
152152
.set('Authorization', `Bearer ${testToken}`)
153153
.expect(400);
154154

155-
expect(response.text).toBe('No file uploaded.');
155+
expect(response.text).toBe(`{"message":"No file uploaded."}`);
156156
});
157157
});
158158

nextstep-frontend/src/pages/Resume.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,14 @@ const Resume: React.FC = () => {
285285
setLoading(false);
286286
};
287287

288-
} catch (err) {
289-
setError(err instanceof Error ? err.message : 'An error occurred');
288+
} catch (err: any) {
289+
if (err.response && err.response.status === 400 &&
290+
err.response.data && err.response.data &&
291+
err.response.data.message) {
292+
setError(err.response.data.message);
293+
} else {
294+
setError(err instanceof Error ? err.message : 'An error occurred');
295+
}
290296
setLoading(false);
291297
}
292298
};

0 commit comments

Comments
 (0)