+ it('Should delete a reply', async function () {
+ this.timeout(10000)
+
+ await deleteVideoComment(servers[2].url, servers[2].accessToken, videoUUID, childOfFirstChild.comment.id)
+
+ await waitJobs(servers)
+ })
+
+ it('Should have this comment marked as deleted', async function () {
+ for (const server of servers) {
+ const res1 = await getVideoCommentThreads(server.url, videoUUID, 0, 5)
+ const threadId = res1.body.data.find(c => c.text === 'my super first comment').id
+
+ const res2 = await getVideoThreadComments(server.url, videoUUID, threadId)
+
+ const tree: VideoCommentThreadTree = res2.body
+ expect(tree.comment.text).equal('my super first comment')
+
+ const firstChild = tree.children[0]
+ expect(firstChild.comment.text).to.equal('my super answer to thread 1')
+ expect(firstChild.children).to.have.lengthOf(1)
+
+ const deletedComment = firstChild.children[0].comment
+ expect(deletedComment.isDeleted).to.be.true
+ expect(deletedComment.deletedAt).to.not.be.null
+ expect(deletedComment.account).to.be.null
+ expect(deletedComment.text).to.equal('')
+
+ const secondChild = tree.children[1]
+ expect(secondChild.comment.text).to.equal('my second answer to thread 1')
+ }
+ })
+
+ it('Should delete the thread comments', async function () {
+ this.timeout(10000)
+
+ const res = await getVideoCommentThreads(servers[0].url, videoUUID, 0, 5)
+ const threadId = res.body.data.find(c => c.text === 'my super first comment').id
+ await deleteVideoComment(servers[0].url, servers[0].accessToken, videoUUID, threadId)
+
+ await waitJobs(servers)
+ })
+
+ it('Should have the threads marked as deleted on other servers too', async function () {
+ for (const server of servers) {
+ const res = await getVideoCommentThreads(server.url, videoUUID, 0, 5)
+
+ expect(res.body.total).to.equal(2)
+ expect(res.body.data).to.be.an('array')
+ expect(res.body.data).to.have.lengthOf(2)
+
+ {
+ const comment: VideoComment = res.body.data[0]
+ expect(comment).to.not.be.undefined
+ expect(comment.inReplyToCommentId).to.be.null
+ expect(comment.account.name).to.equal('root')
+ expect(comment.account.host).to.equal('localhost:' + servers[2].port)
+ expect(comment.totalReplies).to.equal(0)
+ expect(dateIsValid(comment.createdAt as string)).to.be.true
+ expect(dateIsValid(comment.updatedAt as string)).to.be.true
+ }
+
+ {
+ const deletedComment: VideoComment = res.body.data[1]
+ expect(deletedComment).to.not.be.undefined
+ expect(deletedComment.isDeleted).to.be.true
+ expect(deletedComment.deletedAt).to.not.be.null
+ expect(deletedComment.text).to.equal('')
+ expect(deletedComment.inReplyToCommentId).to.be.null
+ expect(deletedComment.account).to.be.null
+ expect(deletedComment.totalReplies).to.equal(3)
+ expect(dateIsValid(deletedComment.createdAt as string)).to.be.true
+ expect(dateIsValid(deletedComment.updatedAt as string)).to.be.true
+ expect(dateIsValid(deletedComment.deletedAt as string)).to.be.true
+ }
+ }
+ })
+
+ it('Should delete a remote thread by the origin server', async function () {
+ this.timeout(5000)
+
+ const res = await getVideoCommentThreads(servers[0].url, videoUUID, 0, 5)
+ const threadId = res.body.data.find(c => c.text === 'my super second comment').id
+ await deleteVideoComment(servers[0].url, servers[0].accessToken, videoUUID, threadId)
+
+ await waitJobs(servers)
+ })
+
+ it('Should have the threads marked as deleted on other servers too', async function () {
+ for (const server of servers) {
+ const res = await getVideoCommentThreads(server.url, videoUUID, 0, 5)
+
+ expect(res.body.total).to.equal(2)
+ expect(res.body.data).to.have.lengthOf(2)
+
+ {
+ const comment: VideoComment = res.body.data[0]
+ expect(comment.text).to.equal('')
+ expect(comment.isDeleted).to.be.true
+ expect(comment.createdAt).to.not.be.null
+ expect(comment.deletedAt).to.not.be.null
+ expect(comment.account).to.be.null
+ expect(comment.totalReplies).to.equal(0)
+ }
+
+ {
+ const comment: VideoComment = res.body.data[1]
+ expect(comment.text).to.equal('')
+ expect(comment.isDeleted).to.be.true
+ expect(comment.createdAt).to.not.be.null
+ expect(comment.deletedAt).to.not.be.null
+ expect(comment.account).to.be.null
+ expect(comment.totalReplies).to.equal(3)
+ }
+ }
+ })
+
+ it('Should disable comments and download', async function () {