Tests for totalRepliesFromVideoAuthor
[oweals/peertube.git] / server / tests / api / videos / video-description.ts
1 /* tslint:disable:no-unused-expression */
2
3 import * as chai from 'chai'
4 import 'mocha'
5 import {
6   cleanupTests,
7   flushAndRunMultipleServers,
8   getVideo,
9   getVideoDescription,
10   getVideosList,
11   killallServers,
12   ServerInfo,
13   setAccessTokensToServers,
14   updateVideo,
15   uploadVideo
16 } from '../../../../shared/extra-utils/index'
17 import { doubleFollow } from '../../../../shared/extra-utils/server/follows'
18 import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
19
20 const expect = chai.expect
21
22 describe('Test video description', function () {
23   let servers: ServerInfo[] = []
24   let videoUUID = ''
25   let videoId: number
26   let longDescription = 'my super description for server 1'.repeat(50)
27
28   before(async function () {
29     this.timeout(40000)
30
31     // Run servers
32     servers = await flushAndRunMultipleServers(2)
33
34     // Get the access tokens
35     await setAccessTokensToServers(servers)
36
37     // Server 1 and server 2 follow each other
38     await doubleFollow(servers[0], servers[1])
39   })
40
41   it('Should upload video with long description', async function () {
42     this.timeout(10000)
43
44     const attributes = {
45       description: longDescription
46     }
47     await uploadVideo(servers[0].url, servers[0].accessToken, attributes)
48
49     await waitJobs(servers)
50
51     const res = await getVideosList(servers[0].url)
52
53     videoId = res.body.data[0].id
54     videoUUID = res.body.data[0].uuid
55   })
56
57   it('Should have a truncated description on each server', async function () {
58     for (const server of servers) {
59       const res = await getVideo(server.url, videoUUID)
60       const video = res.body
61
62       // 30 characters * 6 -> 240 characters
63       const truncatedDescription = 'my super description for server 1'.repeat(7) +
64                                    'my super descrip...'
65
66       expect(video.description).to.equal(truncatedDescription)
67     }
68   })
69
70   it('Should fetch long description on each server', async function () {
71     for (const server of servers) {
72       const res = await getVideo(server.url, videoUUID)
73       const video = res.body
74
75       const res2 = await getVideoDescription(server.url, video.descriptionPath)
76       expect(res2.body.description).to.equal(longDescription)
77     }
78   })
79
80   it('Should update with a short description', async function () {
81     this.timeout(10000)
82
83     const attributes = {
84       description: 'short description'
85     }
86     await updateVideo(servers[0].url, servers[0].accessToken, videoId, attributes)
87
88     await waitJobs(servers)
89   })
90
91   it('Should have a small description on each server', async function () {
92     for (const server of servers) {
93       const res = await getVideo(server.url, videoUUID)
94       const video = res.body
95
96       expect(video.description).to.equal('short description')
97
98       const res2 = await getVideoDescription(server.url, video.descriptionPath)
99       expect(res2.body.description).to.equal('short description')
100     }
101   })
102
103   after(async function () {
104     await cleanupTests(servers)
105   })
106 })