/* eslint-disable @typescript-eslint/no-floating-promises */ import * as request from 'supertest' import { makeDeleteRequest, makeGetRequest } from '../requests/requests' import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' function getAdminVideoComments (options: { url: string token: string start: number count: number sort?: string isLocal?: boolean search?: string searchAccount?: string searchVideo?: string }) { const { url, token, start, count, sort, isLocal, search, searchAccount, searchVideo } = options const path = '/api/v1/videos/comments' const query = { start, count, sort: sort || '-createdAt' } if (isLocal !== undefined) Object.assign(query, { isLocal }) if (search !== undefined) Object.assign(query, { search }) if (searchAccount !== undefined) Object.assign(query, { searchAccount }) if (searchVideo !== undefined) Object.assign(query, { searchVideo }) return makeGetRequest({ url, path, token, query, statusCodeExpected: HttpStatusCode.OK_200 }) } function getVideoCommentThreads (url: string, videoId: number | string, start: number, count: number, sort?: string, token?: string) { const path = '/api/v1/videos/' + videoId + '/comment-threads' const req = request(url) .get(path) .query({ start: start }) .query({ count: count }) if (sort) req.query({ sort }) if (token) req.set('Authorization', 'Bearer ' + token) return req.set('Accept', 'application/json') .expect(HttpStatusCode.OK_200) .expect('Content-Type', /json/) } function getVideoThreadComments (url: string, videoId: number | string, threadId: number, token?: string) { const path = '/api/v1/videos/' + videoId + '/comment-threads/' + threadId const req = request(url) .get(path) .set('Accept', 'application/json') if (token) req.set('Authorization', 'Bearer ' + token) return req.expect(HttpStatusCode.OK_200) .expect('Content-Type', /json/) } function addVideoCommentThread ( url: string, token: string, videoId: number | string, text: string, expectedStatus = HttpStatusCode.OK_200 ) { const path = '/api/v1/videos/' + videoId + '/comment-threads' return request(url) .post(path) .send({ text }) .set('Accept', 'application/json') .set('Authorization', 'Bearer ' + token) .expect(expectedStatus) } function addVideoCommentReply ( url: string, token: string, videoId: number | string, inReplyToCommentId: number, text: string, expectedStatus = HttpStatusCode.OK_200 ) { const path = '/api/v1/videos/' + videoId + '/comments/' + inReplyToCommentId return request(url) .post(path) .send({ text }) .set('Accept', 'application/json') .set('Authorization', 'Bearer ' + token) .expect(expectedStatus) } async function findCommentId (url: string, videoId: number | string, text: string) { const res = await getVideoCommentThreads(url, videoId, 0, 25, '-createdAt') return res.body.data.find(c => c.text === text).id as number } function deleteVideoComment ( url: string, token: string, videoId: number | string, commentId: number, statusCodeExpected = HttpStatusCode.NO_CONTENT_204 ) { const path = '/api/v1/videos/' + videoId + '/comments/' + commentId return makeDeleteRequest({ url, path, token, statusCodeExpected }) } // --------------------------------------------------------------------------- export { getVideoCommentThreads, getAdminVideoComments, getVideoThreadComments, addVideoCommentThread, addVideoCommentReply, findCommentId, deleteVideoComment }