Added IDs in Category routes params

This commit is contained in:
Florian Sylvain
2023-02-02 11:21:55 +01:00
parent 77dc2510ef
commit 265c2a45ec
2 changed files with 31 additions and 36 deletions
+16 -24
View File
@@ -127,7 +127,7 @@ describe('POST /v1/category', () => {
}) })
}) })
describe('GET /v1/category', () => { describe('GET /v1/category/:id?', () => {
it('returns status code 200 and the categories', async () => { it('returns status code 200 and the categories', async () => {
const res = await request(app) const res = await request(app)
.get('/v1/category') .get('/v1/category')
@@ -139,16 +139,25 @@ describe('GET /v1/category', () => {
expect(res.status).toEqual(200) expect(res.status).toEqual(200)
expect(res.body.categories[0].name).toEqual('VueJS Composition API') expect(res.body.categories[0].name).toEqual('VueJS Composition API')
}) })
it('returns status code 200 and the categories', async () => {
const res = await request(app)
.get(`/v1/category/${category_id}`)
.set('Content-Type', 'application/json')
.set('Cookie', jwtCookie as string)
expect(res.status).toEqual(200)
expect(res.body.categories[0].name).toEqual('VueJS Composition API')
})
}) })
describe('PUT /v1/category', () => { describe('PUT /v1/category/:id', () => {
it('returns status code 200 and a success message', async () => { it('returns status code 200 and a success message', async () => {
const res = await request(app) const res = await request(app)
.put('/v1/category') .put(`/v1/category/${category_id}`)
.set('Content-Type', 'application/json') .set('Content-Type', 'application/json')
.set('Cookie', jwtCookie as string) .set('Cookie', jwtCookie as string)
.send(JSON.stringify({ .send(JSON.stringify({
id: category_id,
name: 'VueJS v3 Composition API' name: 'VueJS v3 Composition API'
})) }))
@@ -158,11 +167,10 @@ describe('PUT /v1/category', () => {
it('returns status code 400 and an error message', async () => { it('returns status code 400 and an error message', async () => {
const res = await request(app) const res = await request(app)
.put('/v1/category') .put(`/v1/category/${23591}`)
.set('Content-Type', 'application/json') .set('Content-Type', 'application/json')
.set('Cookie', jwtCookie as string) .set('Cookie', jwtCookie as string)
.send(JSON.stringify({ .send(JSON.stringify({
id: 2,
pouet: 'salut' pouet: 'salut'
})) }))
@@ -171,32 +179,16 @@ describe('PUT /v1/category', () => {
}) })
}) })
describe('DELETE /v1/category', () => { describe('DELETE /v1/category/:id', () => {
it('returns status code 200 and a success message', async () => { it('returns status code 200 and a success message', async () => {
const res = await request(app) const res = await request(app)
.delete('/v1/category') .delete(`/v1/category/${category_id}`)
.set('Content-Type', 'application/json') .set('Content-Type', 'application/json')
.set('Cookie', jwtCookie as string) .set('Cookie', jwtCookie as string)
.send(JSON.stringify({
id: category_id
}))
expect(res.status).toEqual(200) expect(res.status).toEqual(200)
expect(res.body).toHaveProperty('message') expect(res.body).toHaveProperty('message')
}) })
it('returns status code 400 and an error message', async () => {
const res = await request(app)
.delete('/v1/category')
.set('Content-Type', 'application/json')
.set('Cookie', jwtCookie as string)
.send(JSON.stringify({
blablabla: 'pouet'
}))
expect(res.status).toEqual(400)
expect(res.body).toHaveProperty('message')
})
}) })
describe('POST /v1/snippet', () => { describe('POST /v1/snippet', () => {
+15 -12
View File
@@ -10,21 +10,25 @@ const categoryPostParser = z.object({
name: z.string().max(50) name: z.string().max(50)
}).required() }).required()
const categoryDeleteParser = z.object({ const categoryUpdateParser = z.object({
id: z.number() name: z.string().max(50)
}).required() }).required()
const categoryUpdateParser = z.object({ const paramsIdParser = z.object({
id: z.number(), id: z.coerce.number(),
name: z.string().max(50)
}).required() }).required()
// TODO Ajouter pagination et queries de recherche // TODO Ajouter pagination et queries de recherche
const categoryGet: RequestHandler = async (req, res) => { const categoryGet: RequestHandler = async (req, res) => {
let categories: Category[] | null = null let categories: Category[] | null = null
const whereClause: any = { user_id: req.body.userId }
if (req.params.id != undefined) {
whereClause.id = paramsIdParser.parse(req.params).id
}
try { try {
categories = await prisma.category.findMany({ where: { user_id: req.body.userId } }) categories = await prisma.category.findMany({ where: whereClause })
} catch (error: any) { } catch (error: any) {
res.status(400).json({ message: (error.issues ?? error) }) res.status(400).json({ message: (error.issues ?? error) })
return; return;
@@ -57,7 +61,7 @@ const categoryUpdate: RequestHandler = async (req, res) => {
const categoryToUpdate = categoryUpdateParser.parse(req.body) const categoryToUpdate = categoryUpdateParser.parse(req.body)
updated = await prisma.category.updateMany({ updated = await prisma.category.updateMany({
where: { where: {
id: categoryToUpdate.id, id: paramsIdParser.parse(req.params).id,
user_id: req.body.userId user_id: req.body.userId
}, },
data: { data: {
@@ -76,10 +80,9 @@ const categoryDelete: RequestHandler = async (req, res) => {
let deleted: Prisma.BatchPayload let deleted: Prisma.BatchPayload
try { try {
const categoryToDel = categoryDeleteParser.parse(req.body)
deleted = await prisma.category.deleteMany({ deleted = await prisma.category.deleteMany({
where: { where: {
id: categoryToDel.id, id: paramsIdParser.parse(req.params).id,
user_id: req.body.userId user_id: req.body.userId
} }
}) })
@@ -91,9 +94,9 @@ const categoryDelete: RequestHandler = async (req, res) => {
res.json({ message: `${deleted.count} category / categories successfully deleted.` }) res.json({ message: `${deleted.count} category / categories successfully deleted.` })
} }
categoryRouter.get('/', userIdMiddleware, categoryGet) categoryRouter.get('/:id?', userIdMiddleware, categoryGet)
categoryRouter.post('/', userIdMiddleware, categoryPost) categoryRouter.post('/', userIdMiddleware, categoryPost)
categoryRouter.put('/', userIdMiddleware, categoryUpdate) categoryRouter.put('/:id', userIdMiddleware, categoryUpdate)
categoryRouter.delete('/', userIdMiddleware, categoryDelete) categoryRouter.delete('/:id', userIdMiddleware, categoryDelete)
export default categoryRouter export default categoryRouter