refactor(note-permissions-dto): do not embed User objects

This is part of an effort to consistently not embed User objects
in API responses. Usernames are returned instead.

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2022-01-16 22:19:53 +01:00
parent 9b856bf517
commit acaefb3996
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3
4 changed files with 9 additions and 12 deletions

View file

@ -87,12 +87,12 @@ export class NoteGroupPermissionUpdateDto {
export class NotePermissionsDto { export class NotePermissionsDto {
/** /**
* User this permission applies to * Username of the User this permission applies to
*/ */
@ValidateNested() @IsString()
@ApiPropertyOptional({ type: UserInfoDto }) @ApiPropertyOptional()
@IsOptional() @IsOptional()
owner: UserInfoDto | null; owner: string | null;
/** /**
* List of users the note is shared with * List of users the note is shared with

View file

@ -686,8 +686,7 @@ describe('NotesService', () => {
}, },
]); ]);
const permissions = await service.toNotePermissionsDto(note); const permissions = await service.toNotePermissionsDto(note);
expect(permissions.owner).not.toEqual(null); expect(permissions.owner).toEqual(user.username);
expect(permissions.owner?.username).toEqual(user.username);
expect(permissions.sharedToUsers).toHaveLength(1); expect(permissions.sharedToUsers).toHaveLength(1);
expect(permissions.sharedToUsers[0].user.username).toEqual(user.username); expect(permissions.sharedToUsers[0].user.username).toEqual(user.username);
expect(permissions.sharedToUsers[0].canEdit).toEqual(true); expect(permissions.sharedToUsers[0].canEdit).toEqual(true);
@ -777,7 +776,7 @@ describe('NotesService', () => {
expect(metadataDto.description).toEqual(note.description); expect(metadataDto.description).toEqual(note.description);
expect(metadataDto.editedBy).toHaveLength(1); expect(metadataDto.editedBy).toHaveLength(1);
expect(metadataDto.editedBy[0]).toEqual(user.username); expect(metadataDto.editedBy[0]).toEqual(user.username);
expect(metadataDto.permissions.owner.username).toEqual(user.username); expect(metadataDto.permissions.owner).toEqual(user.username);
expect(metadataDto.permissions.sharedToUsers).toHaveLength(1); expect(metadataDto.permissions.sharedToUsers).toHaveLength(1);
expect(metadataDto.permissions.sharedToUsers[0].user.username).toEqual( expect(metadataDto.permissions.sharedToUsers[0].user.username).toEqual(
user.username, user.username,
@ -879,9 +878,7 @@ describe('NotesService', () => {
expect(noteDto.metadata.description).toEqual(note.description); expect(noteDto.metadata.description).toEqual(note.description);
expect(noteDto.metadata.editedBy).toHaveLength(1); expect(noteDto.metadata.editedBy).toHaveLength(1);
expect(noteDto.metadata.editedBy[0]).toEqual(user.username); expect(noteDto.metadata.editedBy[0]).toEqual(user.username);
expect(noteDto.metadata.permissions.owner.username).toEqual( expect(noteDto.metadata.permissions.owner).toEqual(user.username);
user.username,
);
expect(noteDto.metadata.permissions.sharedToUsers).toHaveLength(1); expect(noteDto.metadata.permissions.sharedToUsers).toHaveLength(1);
expect( expect(
noteDto.metadata.permissions.sharedToUsers[0].user.username, noteDto.metadata.permissions.sharedToUsers[0].user.username,

View file

@ -373,7 +373,7 @@ export class NotesService {
const userPermissions = await note.userPermissions; const userPermissions = await note.userPermissions;
const groupPermissions = await note.groupPermissions; const groupPermissions = await note.groupPermissions;
return { return {
owner: owner ? this.usersService.toUserDto(owner) : null, owner: owner ? owner.username : null,
sharedToUsers: userPermissions.map((noteUserPermission) => ({ sharedToUsers: userPermissions.map((noteUserPermission) => ({
user: this.usersService.toUserDto(noteUserPermission.user), user: this.usersService.toUserDto(noteUserPermission.user),
canEdit: noteUserPermission.canEdit, canEdit: noteUserPermission.canEdit,

View file

@ -276,7 +276,7 @@ describe('Notes', () => {
expect(metadata.body.description).toEqual(''); expect(metadata.body.description).toEqual('');
expect(typeof metadata.body.createdAt).toEqual('string'); expect(typeof metadata.body.createdAt).toEqual('string');
expect(metadata.body.editedBy).toEqual([]); expect(metadata.body.editedBy).toEqual([]);
expect(metadata.body.permissions.owner.username).toEqual('hardcoded'); expect(metadata.body.permissions.owner).toEqual('hardcoded');
expect(metadata.body.permissions.sharedToUsers).toEqual([]); expect(metadata.body.permissions.sharedToUsers).toEqual([]);
expect(metadata.body.permissions.sharedToUsers).toEqual([]); expect(metadata.body.permissions.sharedToUsers).toEqual([]);
expect(metadata.body.tags).toEqual([]); expect(metadata.body.tags).toEqual([]);