mirror of
https://github.com/Floriansylvain/SnippetsManager.git
synced 2026-08-19 11:43:15 +02:00
Added PUT route for Snippet
This commit is contained in:
@@ -15,8 +15,6 @@ const testUserCredentials = {
|
||||
let category_id: number
|
||||
let snippet_id: number
|
||||
|
||||
// Mettre a jour les routes Category en stockant les IDs sur GET pour reutiliser sur DELETE
|
||||
|
||||
beforeAll(async () => {
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
@@ -239,6 +237,24 @@ describe('GET /v1/snippet', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('PUT /v1/snippet/:id', () => {
|
||||
it('returns status code 200 and success message', async () => {
|
||||
const res = await request(app)
|
||||
.put(`/v1/snippet/${snippet_id}`)
|
||||
.set('Content-Type', 'application/json')
|
||||
.set('Cookie', jwtCookie as string)
|
||||
.send(JSON.stringify({
|
||||
code: '<p>en fait non à vuejs</p>',
|
||||
// language: 'html'
|
||||
}))
|
||||
|
||||
console.debug(res.body)
|
||||
|
||||
expect(res.status).toEqual(200)
|
||||
expect(res.body).toHaveProperty('message')
|
||||
})
|
||||
})
|
||||
|
||||
describe('DELETE /v1/snippet', () => {
|
||||
it('returns status code 200 and success message', async () => {
|
||||
const res = await request(app)
|
||||
|
||||
+30
-2
@@ -16,6 +16,15 @@ const snippetDeleteParser = z.object({
|
||||
id: z.number(),
|
||||
}).required()
|
||||
|
||||
const snippetUpdateParser = z.object({
|
||||
code: z.string().optional(),
|
||||
title: z.string().max(50).optional(),
|
||||
language: z.string().max(32).optional()
|
||||
})
|
||||
|
||||
const paramsIdParser = z.object({
|
||||
id: z.coerce.number(),
|
||||
}).required()
|
||||
|
||||
// TODO Ajouter paramètres sur la requête pour rechercher des snippets
|
||||
// TODO Ajouter pagination
|
||||
@@ -58,6 +67,26 @@ const snippetPost: RequestHandler = async (req, res) => {
|
||||
res.json({ message: 'Snippet successfully added.' })
|
||||
}
|
||||
|
||||
const snippetUpdate: RequestHandler = async (req, res) => {
|
||||
let updated: Prisma.BatchPayload
|
||||
|
||||
try {
|
||||
const snippetToUpdate = snippetUpdateParser.parse(req.body)
|
||||
updated = await prisma.snippet.updateMany({
|
||||
where: {
|
||||
id: paramsIdParser.parse(req.params).id,
|
||||
user_id: req.body.userId
|
||||
},
|
||||
data: snippetToUpdate
|
||||
})
|
||||
} catch (error: any) {
|
||||
res.status(400).json({ message: (error.issues ?? error) })
|
||||
return;
|
||||
}
|
||||
|
||||
res.json({ message: `${updated.count} snippet / categories successfully updated.` })
|
||||
}
|
||||
|
||||
const snippetDelete: RequestHandler = async (req, res) => {
|
||||
let deleted: Prisma.BatchPayload
|
||||
|
||||
@@ -77,10 +106,9 @@ const snippetDelete: RequestHandler = async (req, res) => {
|
||||
res.json({ message: `${deleted.count} snippet(s) successfully deleted.` })
|
||||
}
|
||||
|
||||
// TODO update snippet
|
||||
|
||||
snippetRouter.get('/', userIdMiddleware, snippetGet)
|
||||
snippetRouter.post('/', userIdMiddleware, snippetPost)
|
||||
snippetRouter.put('/:id', userIdMiddleware, snippetUpdate)
|
||||
snippetRouter.delete('/', userIdMiddleware, snippetDelete)
|
||||
|
||||
export default snippetRouter
|
||||
|
||||
Reference in New Issue
Block a user