mirror of
https://github.com/Floriansylvain/SnippetsManager.git
synced 2026-08-19 11:43:15 +02:00
Added PUT route on category
This commit is contained in:
@@ -12,6 +12,8 @@ const testUserCredentials = {
|
||||
password: "aaaaaaaaaa"
|
||||
}
|
||||
|
||||
let category_id: number
|
||||
|
||||
// Mettre a jour les routes Category en stockant les IDs sur GET pour reutiliser sur DELETE
|
||||
|
||||
beforeAll(async () => {
|
||||
@@ -133,17 +135,36 @@ describe('GET /v1/category', () => {
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Cookie', jwtCookie as string)
|
||||
|
||||
expect(res.status).toEqual(200)
|
||||
expect(res.body).toHaveProperty('categories')
|
||||
})
|
||||
category_id = res.body.categories[0].id
|
||||
|
||||
it('returns status code 400 and error message', async () => {
|
||||
expect(res.status).toEqual(200)
|
||||
expect(res.body.categories[0].name).toEqual('VueJS Composition API')
|
||||
})
|
||||
})
|
||||
|
||||
describe('PUT /v1/category', () => {
|
||||
it('returns status code 200 and a success message', async () => {
|
||||
const res = await request(app)
|
||||
.post('/v1/category')
|
||||
.put('/v1/category')
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Cookie', jwtCookie as string)
|
||||
.send(JSON.stringify({
|
||||
pouet: 'VueJS Composition API'
|
||||
id: category_id,
|
||||
name: 'VueJS v3 Composition API'
|
||||
}))
|
||||
|
||||
expect(res.status).toEqual(200)
|
||||
expect(res.body).toHaveProperty('message')
|
||||
})
|
||||
|
||||
it('returns status code 400 and an error message', async () => {
|
||||
const res = await request(app)
|
||||
.put('/v1/category')
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Cookie', jwtCookie as string)
|
||||
.send(JSON.stringify({
|
||||
id: 2,
|
||||
pouet: 'salut'
|
||||
}))
|
||||
|
||||
expect(res.status).toEqual(400)
|
||||
@@ -158,7 +179,7 @@ describe('DELETE /v1/category', () => {
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Cookie', jwtCookie as string)
|
||||
.send(JSON.stringify({
|
||||
name: 'VueJS Composition API'
|
||||
id: category_id
|
||||
}))
|
||||
|
||||
expect(res.status).toEqual(200)
|
||||
|
||||
@@ -14,6 +14,12 @@ const categoryDeleteParser = z.object({
|
||||
id: z.number()
|
||||
}).required()
|
||||
|
||||
const categoryUpdateParser = z.object({
|
||||
id: z.number(),
|
||||
name: z.string().max(50)
|
||||
}).required()
|
||||
|
||||
// TODO Ajouter pagination et queries de recherche
|
||||
const categoryGet: RequestHandler = async (req, res) => {
|
||||
let categories: Category[] | null = null
|
||||
|
||||
@@ -44,6 +50,28 @@ const categoryPost: RequestHandler = async (req, res) => {
|
||||
res.json({ message: 'Category successfully added.' })
|
||||
}
|
||||
|
||||
const categoryUpdate: RequestHandler = async (req, res) => {
|
||||
let updated: Prisma.BatchPayload
|
||||
|
||||
try {
|
||||
const categoryToUpdate = categoryUpdateParser.parse(req.body)
|
||||
updated = await prisma.category.updateMany({
|
||||
where: {
|
||||
id: categoryToUpdate.id,
|
||||
user_id: req.body.userId
|
||||
},
|
||||
data: {
|
||||
name: categoryToUpdate.name
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
res.status(400).json({ message: (error.issues ?? error) })
|
||||
return;
|
||||
}
|
||||
|
||||
res.json({ message: `${updated.count} category / categories successfully updated.` })
|
||||
}
|
||||
|
||||
const categoryDelete: RequestHandler = async (req, res) => {
|
||||
let deleted: Prisma.BatchPayload
|
||||
|
||||
@@ -65,6 +93,7 @@ const categoryDelete: RequestHandler = async (req, res) => {
|
||||
|
||||
categoryRouter.get('/', userIdMiddleware, categoryGet)
|
||||
categoryRouter.post('/', userIdMiddleware, categoryPost)
|
||||
categoryRouter.put('/', userIdMiddleware, categoryUpdate)
|
||||
categoryRouter.delete('/', userIdMiddleware, categoryDelete)
|
||||
|
||||
export default categoryRouter
|
||||
|
||||
Reference in New Issue
Block a user