diff --git a/server/controllers/estates/deleteEstate.js b/server/controllers/estates/deleteEstate.js new file mode 100644 index 0000000..30a3581 --- /dev/null +++ b/server/controllers/estates/deleteEstate.js @@ -0,0 +1,25 @@ +const { deleteEstate } = require('../../database/quieres'); + +module.exports = async (req, res, next) => { + const { estateId } = req.params; + // check is number + if (!(estateId > 0)) { + return res.status(400).json({ + message: 'Invalid estate id', + }); + } + try { + const { rowCount } = await deleteEstate(estateId); + if (rowCount > 0) { + res.status(200).json({ + message: 'Estate deleted successfully', + }); + } else { + res.status(400).json({ + message: 'You can\'t complete this process at the moment', + }); + } + } catch (err) { + next(err); + } +}; diff --git a/server/controllers/estates/index.js b/server/controllers/estates/index.js index e69de29..fd190bb 100644 --- a/server/controllers/estates/index.js +++ b/server/controllers/estates/index.js @@ -0,0 +1,5 @@ +const deleteEstate = require('./deleteEstate'); + +module.exports = { + deleteEstate, +}; diff --git a/server/controllers/index.js b/server/controllers/index.js index d076472..9815c81 100644 --- a/server/controllers/index.js +++ b/server/controllers/index.js @@ -1,5 +1,6 @@ const { userEstateshandler } = require('./users'); const getAllUsers = require('./users/getAllUsers'); +const {deleteEstate} = require('./estates'); const logout = require('./logout'); -module.exports = { getAllUsers, userEstateshandler, logout }; +module.exports = { getAllUsers, userEstateshandler, logout,deleteEstate }; diff --git a/server/database/quieres/deleteEstate.js b/server/database/quieres/deleteEstate.js new file mode 100644 index 0000000..ecff5d8 --- /dev/null +++ b/server/database/quieres/deleteEstate.js @@ -0,0 +1,3 @@ +const connection = require('../config/connection'); + +module.exports = (id) => connection.query('DELETE FROM estates WHERE id = $1', [id]); diff --git a/server/database/quieres/index.js b/server/database/quieres/index.js index 386595b..f959952 100644 --- a/server/database/quieres/index.js +++ b/server/database/quieres/index.js @@ -1,8 +1,9 @@ const userEstatesQuery = require('./userEstatesQuiery'); const getAllUsersQuery = require('./getAllUsersQuery'); +const deleteEstate = require('./deleteEstate'); module.exports = { getAllUsersQuery, userEstatesQuery, - + deleteEstate, }; diff --git a/server/routes/auth.js b/server/routes/auth.js deleted file mode 100644 index 66adcf9..0000000 --- a/server/routes/auth.js +++ /dev/null @@ -1,5 +0,0 @@ -const router = require('express').Router(); -const { logout } = require('../controllers'); - -router.get('/logout', logout); -module.exports = router; diff --git a/server/routes/estate.js b/server/routes/estate.js index e69de29..aecdd61 100644 --- a/server/routes/estate.js +++ b/server/routes/estate.js @@ -0,0 +1,6 @@ +const router = require('express').Router(); +const { isAuth, isAdmin } = require('../middleware'); +const { deleteEstate } = require('../controllers'); + +router.delete('/:estateId', isAuth, isAdmin, deleteEstate); +module.exports = router; diff --git a/server/routes/index.js b/server/routes/index.js index e55de02..152b866 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -1,9 +1,10 @@ const router = require('express').Router(); - -const auth = require('./auth'); +const { logout } = require('../controllers'); +const estate = require('./estate'); const users = require('./users'); -router.use('/', auth); -router.use('/users', users); +router.use('/estate', estate); +router.get('/users', users); +router.get('/logout', logout); module.exports = router; diff --git a/server/routes/users.js b/server/routes/users.js index 14f0c13..e93c396 100644 --- a/server/routes/users.js +++ b/server/routes/users.js @@ -1,7 +1,9 @@ const router = require('express').Router(); -const { userEstateshandler, getAllUsers } = require('../controllers'); +const { userEstateshandler, getAllUsers, logout } = require('../controllers'); +const estate = require('./estate'); const signup = require('../controllers/users/signup'); +router.use('/estate', estate); router.post('/signup', signup); router.get('/:userId/estates', userEstateshandler); router.get('/', getAllUsers); diff --git a/server/test/index.test.js b/server/test/index.test.js index daacc1d..2c2c6ad 100644 --- a/server/test/index.test.js +++ b/server/test/index.test.js @@ -62,6 +62,34 @@ describe('user estates', () => { }); }); +describe('Delete Specific Estate By Using Id', () => { + test('/estate/:estateId status 200 ', async () => { + const res = await supertest(app) + .delete('/api/v1/estate/1') + .expect(200) + .expect('Content-Type', /json/); + return expect(res.body).toEqual({ + message: 'Estate deleted successfully', + }); + }); + test('/estate/:estateId status 400, when delete the same estate was deleted or not found ', async () => { + const res = await supertest(app) + .delete('/api/v1/estate/100') + .expect(400) + .expect('Content-Type', /json/); + return expect(res.body).toEqual({ + message: 'You can\'t complete this process at the moment', + }); + }); + test('/estate/:estateId status 400, Invalid estate id ', async () => { + const res = await supertest(app) + .delete('/api/v1/estate/-121') + .expect(400) + .expect('Content-Type', /json/); + return expect(res.body).toEqual({ + message: 'Invalid estate id', + }); + }); describe('test signup endpoint with all cases ', () => { test('test sign up endpoint when success', async () => { const res = await supertest(app) @@ -129,4 +157,4 @@ describe('test signup endpoint with all cases ', () => { message: '"confirmedPassword" must be [ref:password]', }); }); -}); +}); \ No newline at end of file