From 310b5219b38427f0c2c7ba57225afdd8f3064380 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 8 Jul 2020 15:51:46 +0200 Subject: Add new abuses tests --- server/models/abuse/abuse.ts | 10 +++---- server/models/abuse/video-comment-abuse.ts | 8 +----- server/models/account/user-notification.ts | 4 ++- server/models/video/video-comment.ts | 42 +----------------------------- 4 files changed, 10 insertions(+), 54 deletions(-) (limited to 'server/models') diff --git a/server/models/abuse/abuse.ts b/server/models/abuse/abuse.ts index 28ecf8253..dffd503b3 100644 --- a/server/models/abuse/abuse.ts +++ b/server/models/abuse/abuse.ts @@ -362,8 +362,8 @@ export class AbuseModel extends Model { const countReportsForReporter = this.get('countReportsForReporter') as number const countReportsForReportee = this.get('countReportsForReportee') as number - let video: VideoAbuse - let comment: VideoCommentAbuse + let video: VideoAbuse = null + let comment: VideoCommentAbuse = null if (this.VideoAbuse) { const abuseModel = this.VideoAbuse @@ -391,13 +391,13 @@ export class AbuseModel extends Model { if (this.VideoCommentAbuse) { const abuseModel = this.VideoCommentAbuse - const entity = abuseModel.VideoComment || abuseModel.deletedComment + const entity = abuseModel.VideoComment comment = { id: entity.id, - text: entity.text, + text: entity.text ?? '', - deleted: !abuseModel.VideoComment, + deleted: entity.isDeleted(), video: { id: entity.Video.id, diff --git a/server/models/abuse/video-comment-abuse.ts b/server/models/abuse/video-comment-abuse.ts index de9f4d5fd..8b34009b4 100644 --- a/server/models/abuse/video-comment-abuse.ts +++ b/server/models/abuse/video-comment-abuse.ts @@ -1,5 +1,4 @@ -import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' -import { VideoComment } from '@shared/models' +import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' import { VideoCommentModel } from '../video/video-comment' import { AbuseModel } from './abuse' @@ -22,11 +21,6 @@ export class VideoCommentAbuseModel extends Model { @UpdatedAt updatedAt: Date - @AllowNull(true) - @Default(null) - @Column(DataType.JSONB) - deletedComment: VideoComment & { Video: { name: string, id: number, uuid: string }} - @ForeignKey(() => AbuseModel) @Column abuseId: number diff --git a/server/models/account/user-notification.ts b/server/models/account/user-notification.ts index 07db5a2db..2945bf709 100644 --- a/server/models/account/user-notification.ts +++ b/server/models/account/user-notification.ts @@ -109,7 +109,7 @@ function buildAccountInclude (required: boolean, withActor = false) { required: true, include: [ { - attributes: [ 'uuid' ], + attributes: [ 'id', 'name', 'uuid' ], model: VideoModel.unscoped(), required: true } @@ -492,6 +492,8 @@ export class UserNotificationModel extends Model { threadId: abuse.VideoCommentAbuse.VideoComment.getThreadId(), video: { + id: abuse.VideoCommentAbuse.VideoComment.Video.id, + name: abuse.VideoCommentAbuse.VideoComment.Video.name, uuid: abuse.VideoCommentAbuse.VideoComment.Video.uuid } } : undefined diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts index fb6078ed8..fa4d13c3b 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts @@ -3,7 +3,6 @@ import { uniq } from 'lodash' import { FindOptions, Op, Order, ScopeOptions, Sequelize, Transaction } from 'sequelize' import { AllowNull, - BeforeDestroy, BelongsTo, Column, CreatedAt, @@ -16,7 +15,6 @@ import { Table, UpdatedAt } from 'sequelize-typescript' -import { logger } from '@server/helpers/logger' import { getServerActor } from '@server/models/application/application' import { MAccount, MAccountId, MUserAccountId } from '@server/types/models' import { VideoPrivacy } from '@shared/models' @@ -242,51 +240,13 @@ export class VideoCommentModel extends Model { @HasMany(() => VideoCommentAbuseModel, { foreignKey: { - name: 'commentId', + name: 'videoCommentId', allowNull: true }, onDelete: 'set null' }) CommentAbuses: VideoCommentAbuseModel[] - @BeforeDestroy - static async saveEssentialDataToAbuses (instance: VideoCommentModel, options) { - const tasks: Promise[] = [] - - if (!Array.isArray(instance.CommentAbuses)) { - instance.CommentAbuses = await instance.$get('CommentAbuses') - - if (instance.CommentAbuses.length === 0) return undefined - } - - if (!instance.Video) { - instance.Video = await instance.$get('Video') - } - - logger.info('Saving video comment %s for abuse.', instance.url) - - const details = Object.assign(instance.toFormattedJSON(), { - Video: { - id: instance.Video.id, - name: instance.Video.name, - uuid: instance.Video.uuid - } - }) - - for (const abuse of instance.CommentAbuses) { - abuse.deletedComment = details - - tasks.push(abuse.save({ transaction: options.transaction })) - } - - Promise.all(tasks) - .catch(err => { - logger.error('Some errors when saving details of comment %s in its abuses before destroy hook.', instance.url, { err }) - }) - - return undefined - } - static loadById (id: number, t?: Transaction): Bluebird { const query: FindOptions = { where: { -- cgit v1.2.3