From d943c64ebd9d55fc5fe19a82e6fa36cbda42fd27 Mon Sep 17 00:00:00 2001 From: patrixampm Date: Fri, 14 Feb 2025 14:28:28 +0100 Subject: [PATCH 1/2] tests added to mapUserListFromModelToApi. Tests fail beacuse there is no safeguard for when db user is undefined or null. --- src/pods/user/user.mappers.spec.ts | 186 +++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 src/pods/user/user.mappers.spec.ts diff --git a/src/pods/user/user.mappers.spec.ts b/src/pods/user/user.mappers.spec.ts new file mode 100644 index 0000000..baa486d --- /dev/null +++ b/src/pods/user/user.mappers.spec.ts @@ -0,0 +1,186 @@ +import { ObjectId } from 'mongodb'; +import * as model from '#dals/user/index.js'; +import * as apiModel from './user.api-model.js'; +import { mapUserFromModelToApi, mapUserListFromModelToApi } from './user.mappers.js'; + +describe('pods/user/user.mappers', () => { + describe('mapUserFromModelToApi', () => { + it('should return one mapped user when required', () => { + // Arrange + const user: model.Usuario = { + _id: new ObjectId('6543d1516ea297f6f49108e5'), + nombre: 'TestName', + apellido: 'TestSurname', + email: 'test@example.com', + telefono: '910000000', + movil: '620000000', + rol: { + id: '677d15fd24c5646a1f7f69c0', + nombre: 'Usuario-Administrador', + }, + esResponsable: true, + esProponente: true, + esAutorizante: false, + esContraseñaTemporal: false, + contraseña: 'test123', + unidad: { + id: '677d1539c3cb57a1f7b57e77', + nombre: 'Unidad E', + code: 'E1', + }, + }; + + // Act + const result = mapUserFromModelToApi(user); + + // Assert + const expectedResult: apiModel.Usuario = { + id: '6543d1516ea297f6f49108e5', + nombre: 'TestName', + apellido: 'TestSurname', + email: 'test@example.com', + telefono: '910000000', + movil: '620000000', + rol: { + id: '677d15fd24c5646a1f7f69c0', + nombre: 'Usuario-Administrador', + }, + esResponsable: true, + esProponente: true, + esAutorizante: false, + unidad: { + id: '677d1539c3cb57a1f7b57e77', + nombre: 'Unidad E', + code: 'E1', + }, + }; + expect(result).toEqual(expectedResult); + }); + + it.each<{ user: model.Usuario }>([{ user: undefined }, { user: null }])( + 'should return undefined when user equals $resource', + ({ user }) => { + // Arrange + + // Act + const result = mapUserFromModelToApi(user); + + // Assert + expect(result).toEqual(undefined); + } + ); + }); + + describe('mapUserListFromModelToApi', () => { + it.each<{ userList: model.Usuario[] }>([{ userList: undefined }, { userList: null }, { userList: [] }])( + 'should return empty array when userList equals $userList', + ({ userList }) => { + // Arrange + + // Act + const result = mapUserListFromModelToApi(userList); + + // Assert + expect(result).toEqual([]); + } + ); + + it('should return mapped users in array when users are required', () => { + // Arrange + const userList: model.Usuario[] = [ + { + _id: new ObjectId('6543d1516ea297f6f49108e5'), + nombre: 'TestName1', + apellido: 'TestSurname1', + email: 'test1@example.com', + telefono: '910000000', + movil: '620000000', + rol: { + id: '677d15fd24c5646a1f7f69c0', + nombre: 'Usuario-Administrador', + }, + esResponsable: true, + esProponente: true, + esAutorizante: false, + esContraseñaTemporal: false, + contraseña: 'test123', + unidad: { + id: '677d1539c3cb57a1f7b57e77', + nombre: 'Unidad E', + code: 'E1', + }, + }, + { + _id: new ObjectId('6543d1516ea297f6f49108e6'), + nombre: 'TestName2', + apellido: 'TestSurname2', + email: 'test2@example.com', + telefono: '920000000', + movil: '630000000', + rol: { + id: '677d15fd24c5646a1f7f69c0', + nombre: 'Usuario-Administrador', + }, + esResponsable: true, + esProponente: true, + esAutorizante: false, + esContraseñaTemporal: false, + contraseña: 'test123', + unidad: { + id: '677d1539c3cb57a1f7b57e77', + nombre: 'Unidad E', + code: 'E1', + }, + }, + ]; + + // Act + const result = mapUserListFromModelToApi(userList); + + // Assert + const expectedResult: apiModel.Usuario[] = [ + { + id: '6543d1516ea297f6f49108e5', + nombre: 'TestName1', + apellido: 'TestSurname1', + email: 'test1@example.com', + telefono: '910000000', + movil: '620000000', + rol: { + id: '677d15fd24c5646a1f7f69c0', + nombre: 'Usuario-Administrador', + }, + esResponsable: true, + esProponente: true, + esAutorizante: false, + unidad: { + id: '677d1539c3cb57a1f7b57e77', + nombre: 'Unidad E', + code: 'E1', + }, + }, + { + id: '6543d1516ea297f6f49108e6', + nombre: 'TestName2', + apellido: 'TestSurname2', + email: 'test2@example.com', + telefono: '920000000', + movil: '630000000', + rol: { + id: '677d15fd24c5646a1f7f69c0', + nombre: 'Usuario-Administrador', + }, + esResponsable: true, + esProponente: true, + esAutorizante: false, + unidad: { + id: '677d1539c3cb57a1f7b57e77', + nombre: 'Unidad E', + code: 'E1', + }, + }, + ]; + expect(result).toEqual(expectedResult); + }); + }); +}); From ceb8bebf2fdde599ebb762d21521b25ff3a2efb0 Mon Sep 17 00:00:00 2001 From: patrixampm Date: Fri, 14 Feb 2025 14:53:37 +0100 Subject: [PATCH 2/2] Typo fixed in unit test. --- src/pods/user/user.mappers.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pods/user/user.mappers.spec.ts b/src/pods/user/user.mappers.spec.ts index baa486d..8db237d 100644 --- a/src/pods/user/user.mappers.spec.ts +++ b/src/pods/user/user.mappers.spec.ts @@ -58,7 +58,7 @@ describe('pods/user/user.mappers', () => { }); it.each<{ user: model.Usuario }>([{ user: undefined }, { user: null }])( - 'should return undefined when user equals $resource', + 'should return undefined when user equals $user', ({ user }) => { // Arrange