Added PUT route for Snippet

This commit is contained in:
Florian Sylvain
2023-02-02 10:11:56 +01:00
parent 0e5af06915
commit 10c7c07b97
2 changed files with 48 additions and 4 deletions
+18 -2
View File
@@ -15,8 +15,6 @@ const testUserCredentials = {
let category_id: number let category_id: number
let snippet_id: number let snippet_id: number
// Mettre a jour les routes Category en stockant les IDs sur GET pour reutiliser sur DELETE
beforeAll(async () => { beforeAll(async () => {
await prisma.user.create({ await prisma.user.create({
data: { 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', () => { describe('DELETE /v1/snippet', () => {
it('returns status code 200 and success message', async () => { it('returns status code 200 and success message', async () => {
const res = await request(app) const res = await request(app)
+30 -2
View File
@@ -16,6 +16,15 @@ const snippetDeleteParser = z.object({
id: z.number(), id: z.number(),
}).required() }).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 paramètres sur la requête pour rechercher des snippets
// TODO Ajouter pagination // TODO Ajouter pagination
@@ -58,6 +67,26 @@ const snippetPost: RequestHandler = async (req, res) => {
res.json({ message: 'Snippet successfully added.' }) 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) => { const snippetDelete: RequestHandler = async (req, res) => {
let deleted: Prisma.BatchPayload let deleted: Prisma.BatchPayload
@@ -77,10 +106,9 @@ const snippetDelete: RequestHandler = async (req, res) => {
res.json({ message: `${deleted.count} snippet(s) successfully deleted.` }) res.json({ message: `${deleted.count} snippet(s) successfully deleted.` })
} }
// TODO update snippet
snippetRouter.get('/', userIdMiddleware, snippetGet) snippetRouter.get('/', userIdMiddleware, snippetGet)
snippetRouter.post('/', userIdMiddleware, snippetPost) snippetRouter.post('/', userIdMiddleware, snippetPost)
snippetRouter.put('/:id', userIdMiddleware, snippetUpdate)
snippetRouter.delete('/', userIdMiddleware, snippetDelete) snippetRouter.delete('/', userIdMiddleware, snippetDelete)
export default snippetRouter export default snippetRouter