From 8ae7f7d2fe67534df8f3ac74c90f3b91828167ad Mon Sep 17 00:00:00 2001 From: jeffplays2005 Date: Wed, 16 Oct 2024 15:40:05 +1300 Subject: [PATCH 1/2] Fixed edit event endpoint to properly parse timestamps * Added parsing in controller for timestamps * Modified test case to try editing timestamp --- .../middleware/tests/AdminController.test.ts | 10 ++++++- .../controllers/AdminController.ts | 28 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/server/src/middleware/tests/AdminController.test.ts b/server/src/middleware/tests/AdminController.test.ts index 1155408b..d481d6af 100644 --- a/server/src/middleware/tests/AdminController.test.ts +++ b/server/src/middleware/tests/AdminController.test.ts @@ -832,14 +832,22 @@ describe("AdminController endpoint tests", () => { }) it("should let admins edit an event", async () => { const newEvent = await eventService.createEvent(event1) + const newDate = dateToFirestoreTimeStamp(new Date()) const res = await request .patch("/admin/events/" + newEvent.id) .set("Authorization", `Bearer ${adminToken}`) - .send({ title: "Cool event!", location: "UoA" } as Partial) + .send({ + title: "Cool event!", + location: "UoA", + physical_start_date: newDate + } as Partial) expect(res.status).toEqual(200) const fetchedEvent = await eventService.getEventById(newEvent.id) expect(fetchedEvent.title).toEqual("Cool event!") expect(fetchedEvent.location).toEqual("UoA") + expect( + removeUnderscoresFromTimestamp(fetchedEvent.physical_start_date) + ).toEqual(newDate) }) }) }) diff --git a/server/src/service-layer/controllers/AdminController.ts b/server/src/service-layer/controllers/AdminController.ts index 69a234d9..949d9999 100644 --- a/server/src/service-layer/controllers/AdminController.ts +++ b/server/src/service-layer/controllers/AdminController.ts @@ -749,7 +749,33 @@ export class AdminController extends Controller { this.setStatus(404) } try { - eventService.updateEvent(id, requestBody) + eventService.updateEvent(id, { + ...requestBody, + ...(requestBody.sign_up_start_date && { + sign_up_start_date: new Timestamp( + requestBody.sign_up_start_date.seconds, + requestBody.sign_up_start_date.nanoseconds + ) + }), + ...(requestBody.sign_up_end_date && { + sign_up_end_date: new Timestamp( + requestBody.sign_up_end_date.seconds, + requestBody.sign_up_end_date.nanoseconds + ) + }), + ...(requestBody.physical_start_date && { + physical_start_date: new Timestamp( + requestBody.physical_start_date.seconds, + requestBody.physical_start_date.nanoseconds + ) + }), + ...(requestBody.physical_end_date && { + physical_end_date: new Timestamp( + requestBody.physical_end_date.seconds, + requestBody.physical_end_date.nanoseconds + ) + }) + }) } catch (e) { this.setStatus(500) } From 2def8c2aa7e4b06974528807d716aa8a1b265874 Mon Sep 17 00:00:00 2001 From: jeffplays2005 Date: Thu, 17 Oct 2024 11:37:33 +1300 Subject: [PATCH 2/2] Destructure request body * Also added error logging in case of server errors --- .../controllers/AdminController.ts | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/server/src/service-layer/controllers/AdminController.ts b/server/src/service-layer/controllers/AdminController.ts index 949d9999..bcd4055d 100644 --- a/server/src/service-layer/controllers/AdminController.ts +++ b/server/src/service-layer/controllers/AdminController.ts @@ -749,34 +749,41 @@ export class AdminController extends Controller { this.setStatus(404) } try { + const { + sign_up_start_date, + sign_up_end_date, + physical_start_date, + physical_end_date + } = requestBody eventService.updateEvent(id, { ...requestBody, - ...(requestBody.sign_up_start_date && { + ...(sign_up_start_date && { sign_up_start_date: new Timestamp( - requestBody.sign_up_start_date.seconds, - requestBody.sign_up_start_date.nanoseconds + sign_up_start_date.seconds, + sign_up_start_date.nanoseconds ) }), - ...(requestBody.sign_up_end_date && { + ...(sign_up_end_date && { sign_up_end_date: new Timestamp( - requestBody.sign_up_end_date.seconds, - requestBody.sign_up_end_date.nanoseconds + sign_up_end_date.seconds, + sign_up_end_date.nanoseconds ) }), - ...(requestBody.physical_start_date && { + ...(physical_start_date && { physical_start_date: new Timestamp( - requestBody.physical_start_date.seconds, - requestBody.physical_start_date.nanoseconds + physical_start_date.seconds, + physical_start_date.nanoseconds ) }), - ...(requestBody.physical_end_date && { + ...(physical_end_date && { physical_end_date: new Timestamp( - requestBody.physical_end_date.seconds, - requestBody.physical_end_date.nanoseconds + physical_end_date.seconds, + physical_end_date.nanoseconds ) }) }) } catch (e) { + console.error(e) this.setStatus(500) } this.setStatus(200)