From 52750429b0e2b12452c3128dc465c0aa365cbf80 Mon Sep 17 00:00:00 2001 From: Marius Friess <34072851+mariusfriess@users.noreply.github.com> Date: Wed, 16 Aug 2023 12:47:05 +0200 Subject: [PATCH] Add option to change room password (#54) --- src/room/mock/room.service.mock.ts | 8 +++++++- src/room/room.controller.spec.ts | 2 ++ src/room/room.controller.ts | 2 +- src/room/room.entity.ts | 2 +- src/room/room.service.spec.ts | 9 ++++++++- src/room/room.service.ts | 3 +++ 6 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/room/mock/room.service.mock.ts b/src/room/mock/room.service.mock.ts index 27918e4..a104e70 100644 --- a/src/room/mock/room.service.mock.ts +++ b/src/room/mock/room.service.mock.ts @@ -20,11 +20,17 @@ export class MockRoomService { }); } - public async update(id: number, category: Category, name: string) { + public async update( + id: number, + category: Category, + name: string, + password?: string, + ) { if (id === 1 && category === this.testCategory) { return Promise.resolve({ ...this.testRoom, name, + password, }); } throw new Error('Room not found'); diff --git a/src/room/room.controller.spec.ts b/src/room/room.controller.spec.ts index e39ac51..63a2c41 100644 --- a/src/room/room.controller.spec.ts +++ b/src/room/room.controller.spec.ts @@ -127,6 +127,7 @@ describe('RoomController', () => { describe('update', () => { const updateRoomDto = { name: 'Updated Room', + password: 'new-password', }; it('should update the room and return the updated room', async () => { @@ -139,6 +140,7 @@ describe('RoomController', () => { expect(result).toEqual( expect.objectContaining({ name: updateRoomDto.name, + password: updateRoomDto.password, }), ); }); diff --git a/src/room/room.controller.ts b/src/room/room.controller.ts index c98aa65..b6a84f1 100644 --- a/src/room/room.controller.ts +++ b/src/room/room.controller.ts @@ -60,7 +60,7 @@ export class RoomController { ) { const user = await this.auth.user(); const category = await this.categories.get(categoryId, user); - return this.rooms.update(roomId, category, data.name); + return this.rooms.update(roomId, category, data.name, data.password); } /** diff --git a/src/room/room.entity.ts b/src/room/room.entity.ts index 928cf9a..ba494d8 100644 --- a/src/room/room.entity.ts +++ b/src/room/room.entity.ts @@ -21,7 +21,7 @@ export class Room { @Property() name: string; - @Property({ hidden: true }) + @Property() password?: string; @ManyToOne({ onDelete: 'cascade' }) diff --git a/src/room/room.service.spec.ts b/src/room/room.service.spec.ts index e4fc300..22e348a 100644 --- a/src/room/room.service.spec.ts +++ b/src/room/room.service.spec.ts @@ -125,10 +125,17 @@ describe('RoomService', () => { describe('update', () => { it('should successfully update the room name and return the updated room', async () => { const updatedName = 'Updated Room'; - const result = await service.update(1, TEST_CATEGORY, updatedName); + const updatedPassword = 'new-password'; + const result = await service.update( + 1, + TEST_CATEGORY, + updatedName, + updatedPassword, + ); expect(result).toEqual(TEST_ROOM); expect(TEST_ROOM.name).toBe(updatedName); + expect(TEST_ROOM.password).toBe(updatedPassword); expect(entityManager.persistAndFlush).toHaveBeenCalledWith(TEST_ROOM); }); diff --git a/src/room/room.service.ts b/src/room/room.service.ts index ddba596..6220922 100644 --- a/src/room/room.service.ts +++ b/src/room/room.service.ts @@ -61,16 +61,19 @@ export class RoomService { * @param id - The ID of the room. * @param category - The category of the room. * @param name - The new name for the room. + * @param password - The optional password for the room. * @returns The updated room. */ public async update( id: number, category: Category, name: string, + password?: string, ): Promise<Room> { const room = await this.get(id, category); room.name = name; + room.password = password; await this.em.persistAndFlush(room); -- GitLab