Skip to content

Commit

Permalink
test: revise based on comments
Browse files Browse the repository at this point in the history
  • Loading branch information
20chen-7 committed Jun 3, 2024
1 parent 39c09f8 commit 0fe64a5
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 86 deletions.
2 changes: 1 addition & 1 deletion requirements/rolePresetsController/createNewPresets.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ Cross Mark: ❌
2. ✅ Returns 400 if missing presetName
3. ✅ Returns 400 if missing roleName
4. ✅ Returns 400 if missing premissions
5. ✅ Returns 400 when saving new presets
5. ✅ Returns error 400 when saving new presets

> ## Edge case
6 changes: 3 additions & 3 deletions requirements/rolePresetsController/deletePresetById.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ Cross Mark: ❌

> ## Negative case
1. ✅ Returns error 404 if the API does not exist
2. ✅ Returns error 403 if user doesn't have permissions for putRole
3. ✅ Returns 404 if any error when finding by id
1. ✅ Returns error 403 if user doesn't have permissions for putRole
2. ✅ Returns 400 if error in finding by id
3. ✅ Returns 400 if the route doesn't exist
4. ✅ Returns 400 if any error when removing results

> ## Edge case
8 changes: 3 additions & 5 deletions requirements/rolePresetsController/getPresetsByRole.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ Cross Mark: ❌

> ## Positive case
1. ✅ Receives a GET request in the **/api/rolePreset** route
1. ✅ Return 200 if get Presets by roleName successfully.
2. ✅ Return 200 if get Presets by roleName successfully.

> ## Negative case
1. ✅ Returns error 404 if the API does not exist
2. ✅ Returns error 403 if user doesn't have permissions for putRole
3. ✅ Returns 404 if any error when finding by id
4. ✅ Returns 400 when catching any error in finding roleName
1. ✅ Returns error 403 if user doesn't have permissions for putRole
2. ✅ Returns 400 when catching any error in finding roleName

> ## Edge case
8 changes: 4 additions & 4 deletions requirements/rolePresetsController/updatePresetById.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ Cross Mark: ❌

> ## Negative case
1. ✅ Returns error 404 if the API does not exist
2. ✅ Returns error 403 if user doesn't have permissions for putRole
3. ✅ Returns 404 if any error when finding by id
4. ✅ Returns 400 if any error when saving results
1. ✅ Returns error 403 if user doesn't have permissions for putRole
2. ✅ Returns 400 if the router doesn't exist
3. ✅ Returns 400 if error in finding by id
3. ✅ Returns 400 if any error when saving results

> ## Edge case
22 changes: 9 additions & 13 deletions src/controllers/rolePresetsController.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,14 @@ const helper = require('../utilities/permissions');
const rolePresetsController = function (Preset) {
const getPresetsByRole = async function (req, res) {
if (!(await helper.hasPermission(req.body.requestor, 'putRole'))) {
res.status(403).send({ error: 'You are not authorized to make changes to roles.' });
res.status(403).send('You are not authorized to make changes to roles.');
return;
}

const { roleName } = req.params;
Preset.find({ roleName })
.then((results) => {
if (results.length === 0) {
res.status(404).send({ error: 'No presets found for the specified role.' });
} else {
res.status(200).send(results);
}
res.status(200).send(results);
})
.catch((error) => {
res.status(400).send(error);
Expand All @@ -23,7 +19,7 @@ const rolePresetsController = function (Preset) {

const createNewPreset = async function (req, res) {
if (!(await helper.hasPermission(req.body.requestor, 'putRole'))) {
res.status(403).send({ error: 'You are not authorized to make changes to roles.' });
res.status(403).send('You are not authorized to make changes to roles.');
return;
}

Expand All @@ -41,12 +37,12 @@ const rolePresetsController = function (Preset) {
preset
.save()
.then((result) => res.status(201).send({ newPreset: result, message: 'New preset created' }))
.catch((error) => res.status(400).send(error));
.catch((error) => res.status(400).send({ error }));
};

const updatePresetById = async function (req, res) {
if (!(await helper.hasPermission(req.body.requestor, 'putRole'))) {
res.status(403).send({ error: 'You are not authorized to make changes to roles.' });
res.status(403).send('You are not authorized to make changes to roles.');
return;
}

Expand All @@ -61,12 +57,12 @@ const rolePresetsController = function (Preset) {
.then((results) => res.status(200).send(results))
.catch((errors) => res.status(400).send(errors));
})
.catch((error) => res.status(404).send(error));
.catch((error) => res.status(400).send({ error }));
};

const deletePresetById = async function (req, res) {
if (!(await helper.hasPermission(req.body.requestor, 'putRole'))) {
res.status(403).send({ error: 'You are not authorized to make changes to roles.' });
res.status(403).send('You are not authorized to make changes to roles.');
return;
}

Expand All @@ -76,9 +72,9 @@ const rolePresetsController = function (Preset) {
result
.remove()
.then(res.status(200).send({ message: 'Deleted preset' }))
.catch((error) => res.status(400).send(error));
.catch((error) => res.status(400).send({ error }));
})
.catch((error) => res.status(404).send(error));
.catch((error) => res.status(400).send({ error }));
};

return {
Expand Down
52 changes: 12 additions & 40 deletions src/controllers/rolePresetsController.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,7 @@ describe('rolePresets Controller', () => {

expect(hasPermissionSpy).toHaveBeenCalledWith(mockReq.body.requestor, 'putRole');

assertResMock(
403,
{
error: 'You are not authorized to make changes to roles.',
},
response,
mockRes,
);
assertResMock(403, 'You are not authorized to make changes to roles.', response, mockRes);
});
test('Ensure createNewPresetsreturns 400 if missing roleName', async () => {
const { createNewPreset } = makeSut();
Expand Down Expand Up @@ -152,7 +145,7 @@ describe('rolePresets Controller', () => {

expect(hasPermissionSpy).toHaveBeenCalledWith(newMockReq.body.requestor, 'putRole');

assertResMock(400, new Error('Error when saving'), response, mockRes);
assertResMock(400, { error: new Error('Error when saving') }, response, mockRes);
});
test('Ensure createNewPresets returns 201 if saving new preset successfully', async () => {
const { createNewPreset } = makeSut();
Expand Down Expand Up @@ -202,14 +195,7 @@ describe('rolePresets Controller', () => {

expect(hasPermissionSpy).toHaveBeenCalledWith(mockReq.body.requestor, 'putRole');

assertResMock(
403,
{
error: 'You are not authorized to make changes to roles.',
},
response,
mockRes,
);
assertResMock(403, 'You are not authorized to make changes to roles.', response, mockRes);
});
test('Ensure getPresetsByRole returns 400 if error in finding roleName', async () => {
const { getPresetsByRole } = makeSut();
Expand Down Expand Up @@ -268,16 +254,9 @@ describe('rolePresets Controller', () => {

expect(hasPermissionSpy).toHaveBeenCalledWith(mockReq.body.requestor, 'putRole');

assertResMock(
403,
{
error: 'You are not authorized to make changes to roles.',
},
response,
mockRes,
);
assertResMock(403, 'You are not authorized to make changes to roles.', response, mockRes);
});
test('Ensure updatePresetById returns 404 if error in finding by id', async () => {
test('Ensure updatePresetById returns 400 if error in finding by id', async () => {
const { updatePresetById } = makeSut();
const hasPermissionSpy = jest
.spyOn(helper, 'hasPermission')
Expand All @@ -296,7 +275,7 @@ describe('rolePresets Controller', () => {
await flushPromises();
expect(hasPermissionSpy).toHaveBeenCalledWith(newMockReq.body.requestor, 'putRole');

assertResMock(404, new Error('Error when finding by id'), response, mockRes);
assertResMock(400, { error: new Error('Error when finding by id') }, response, mockRes);
});
test('Ensure updatePresetById returns 400 if error in saving results', async () => {
const { updatePresetById } = makeSut();
Expand Down Expand Up @@ -373,16 +352,9 @@ describe('rolePresets Controller', () => {

expect(hasPermissionSpy).toHaveBeenCalledWith(mockReq.body.requestor, 'putRole');

assertResMock(
403,
{
error: 'You are not authorized to make changes to roles.',
},
response,
mockRes,
);
assertResMock(403, 'You are not authorized to make changes to roles.', response, mockRes);
});
test('Ensure deletePresetById returns 404 if error in finding by id', async () => {
test('Ensure deletePresetById returns 400 if error in finding by id', async () => {
const { deletePresetById } = makeSut();
const hasPermissionSpy = jest
.spyOn(helper, 'hasPermission')
Expand All @@ -401,9 +373,9 @@ describe('rolePresets Controller', () => {
await flushPromises();
expect(hasPermissionSpy).toHaveBeenCalledWith(newMockReq.body.requestor, 'putRole');

assertResMock(404, new Error('Error when finding by id'), response, mockRes);
assertResMock(400, { error: new Error('Error when finding by id') }, response, mockRes);
});
test('Ensure deletePresetById returns 400 if error in removing', async () => {
test('Ensure deletePresetById returns 400 if error when removing results', async () => {
const { deletePresetById } = makeSut();
const hasPermissionSpy = jest
.spyOn(helper, 'hasPermission')
Expand All @@ -423,14 +395,14 @@ describe('rolePresets Controller', () => {
};
const removeObj = { remove: () => {} };
const findByIdSpy = jest.spyOn(Preset, 'findById').mockResolvedValue(removeObj);
jest.spyOn(removeObj, 'remove').mockRejectedValue(new Error('Error when removing'));
jest.spyOn(removeObj, 'remove').mockRejectedValue({ error: 'Error when removing' });
const response = await deletePresetById(newMockReq, mockRes);

await flushPromises();
expect(hasPermissionSpy).toHaveBeenCalledWith(newMockReq.body.requestor, 'putRole');

expect(findByIdSpy).toHaveBeenCalledWith(newMockReq.params.presetId);
assertResMock(400, new Error('Error when removing'), response, mockRes);
assertResMock(400, { error: { error: 'Error when removing' } }, response, mockRes);
});
test('Ensure deletePresetById returns 200 if deleting successfully', async () => {
const { deletePresetById } = makeSut();
Expand Down
28 changes: 8 additions & 20 deletions src/routes/rolePresetRouter.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ describe('rolePreset routes', () => {
.send(reqBody)
.set('Authorization', volunteerToken)
.expect(403);

expect(response.body).toEqual({ error: 'You are not authorized to make changes to roles.' });
expect(response.text).toEqual('You are not authorized to make changes to roles.');
});

it('Should return 400 if missing roleName', async () => {
Expand Down Expand Up @@ -134,15 +133,7 @@ describe('rolePreset routes', () => {
.set('Authorization', volunteerToken)
.expect(403);

expect(response.body).toEqual({ error: 'You are not authorized to make changes to roles.' });
});

it('Should return 404 if the route does not exist', async () => {
const response = await agent
.get('/api/rolePreset/emptyRole')
.set('Authorization', adminToken)
.expect(404);
expect(response.body).toEqual({ error: 'No presets found for the specified role.' });
expect(response.text).toEqual('You are not authorized to make changes to roles.');
});

it('Should return 200 if getPreset By role successfully', async () => {
Expand Down Expand Up @@ -175,15 +166,15 @@ describe('rolePreset routes', () => {
.set('Authorization', volunteerToken)
.expect(403);

expect(response.body).toEqual({ error: 'You are not authorized to make changes to roles.' });
expect(response.text).toEqual('You are not authorized to make changes to roles.');
});

it('Should return 404 if the route does not exist', async () => {
it('Should return 400 if the route does not exist', async () => {
await agent
.put('/api/rolePreset/randomId123')
.send(reqBody)
.set('Authorization', adminToken)
.expect(404);
.expect(400);
});

it('Should return 200 if update Preset By Id successfully', async () => {
Expand All @@ -192,7 +183,6 @@ describe('rolePreset routes', () => {
_rolePreset.presetName = reqBody.presetName;
_rolePreset.permissions = reqBody.permissions;
const rolePreset = await _rolePreset.save();
const fetchedPreset = await RolePreset.findById(rolePreset._id);
const response = await agent
.put(`/api/rolePreset/${rolePreset._id}`)
.send(reqBody)
Expand All @@ -216,15 +206,15 @@ describe('rolePreset routes', () => {
.set('Authorization', volunteerToken)
.expect(403);

expect(response.body).toEqual({ error: 'You are not authorized to make changes to roles.' });
expect(response.text).toEqual('You are not authorized to make changes to roles.');
});

it('Should return 404 if the route does not exist', async () => {
it('Should return 400 if the route does not exist', async () => {
await agent
.delete('/api/rolePreset/randomId123')
.send(reqBody)
.set('Authorization', adminToken)
.expect(404);
.expect(400);
});

it('Should return 200 if update Preset By Id successfully', async () => {
Expand All @@ -233,9 +223,7 @@ describe('rolePreset routes', () => {
_rolePreset.presetName = reqBody.presetName;
_rolePreset.permissions = reqBody.permissions;
const rolePreset = await _rolePreset.save();
const fetchedPreset = await RolePreset.findById(rolePreset._id);

console.log(fetchedPreset);
const response = await agent
.delete(`/api/rolePreset/${rolePreset._id}`)
.send(reqBody)
Expand Down

0 comments on commit 0fe64a5

Please sign in to comment.