From 577811be296b61aecff21fecbfa780937e28e273 Mon Sep 17 00:00:00 2001 From: Philip Molares Date: Sat, 20 Feb 2021 11:38:50 +0100 Subject: [PATCH] NotePermissions: Remove default constructors As discussed in #835 we don't want to have default constructors and prefer .create methods. Because the created NoteGroupPermission and NoteUserPermission are not saved to the DB by themselves, but are saved via a change to the Note using a Pick-style return type is not helpful here as every single time the .create functions are called a full object is required. The mock calls in the PermissionService test are not needed and break the .create calls so they got removed. Signed-off-by: Philip Molares --- src/permissions/note-group-permission.entity.ts | 10 ++++++++++ src/permissions/note-user-permission.entity.ts | 10 ++++++++++ src/permissions/permissions.service.spec.ts | 10 +--------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/permissions/note-group-permission.entity.ts b/src/permissions/note-group-permission.entity.ts index 79ea2d51d..d1e94112c 100644 --- a/src/permissions/note-group-permission.entity.ts +++ b/src/permissions/note-group-permission.entity.ts @@ -18,4 +18,14 @@ export class NoteGroupPermission { @Column() canEdit: boolean; + + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + public static create(group: Group, canEdit: boolean): NoteGroupPermission { + const groupPermission = new NoteGroupPermission(); + groupPermission.group = group; + groupPermission.canEdit = canEdit; + return groupPermission; + } } diff --git a/src/permissions/note-user-permission.entity.ts b/src/permissions/note-user-permission.entity.ts index c0f8f0e83..0bad0d41d 100644 --- a/src/permissions/note-user-permission.entity.ts +++ b/src/permissions/note-user-permission.entity.ts @@ -18,4 +18,14 @@ export class NoteUserPermission { @Column() canEdit: boolean; + + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + public static create(user: User, canEdit: boolean): NoteUserPermission { + const userPermission = new NoteUserPermission(); + userPermission.user = user; + userPermission.canEdit = canEdit; + return userPermission; + } } diff --git a/src/permissions/permissions.service.spec.ts b/src/permissions/permissions.service.spec.ts index b5b4eb56e..da27e14a4 100644 --- a/src/permissions/permissions.service.spec.ts +++ b/src/permissions/permissions.service.spec.ts @@ -23,11 +23,6 @@ import { Revision } from '../revisions/revision.entity'; import { Tag } from '../notes/tag.entity'; import { Group } from '../groups/group.entity'; -jest.mock('../permissions/note-group-permission.entity.ts'); -jest.mock('../groups/group.entity.ts'); -jest.mock('../notes/note.entity.ts'); -jest.mock('../users/user.entity.ts'); - describe('PermissionsService', () => { let permissionsService: PermissionsService; @@ -292,10 +287,7 @@ describe('PermissionsService', () => { group: Group, write: boolean, ): NoteGroupPermission { - const noteGroupPermission = new NoteGroupPermission(); - noteGroupPermission.canEdit = write; - noteGroupPermission.group = group; - return noteGroupPermission; + return NoteGroupPermission.create(group, write); } const everybodyRead = createNoteGroupPermission(groups['everybody'], false);