]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/search/search-videos.ts
Allow to specify transcoding and import jobs concurrency
[github/Chocobozzz/PeerTube.git] / server / tests / api / search / search-videos.ts
index 50da837da8c974325c4186d67479bdca8050b799..e05c3a2691d07641bea71746ec5b58631814066d 100644 (file)
@@ -1,32 +1,31 @@
-/* tslint:disable:no-unused-expression */
+/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
 
 import * as chai from 'chai'
 import 'mocha'
 import {
   advancedVideosSearch,
-  flushTests,
-  killallServers,
-  runServer,
+  cleanupTests,
+  flushAndRunServer,
+  immutableAssign,
   searchVideo,
   ServerInfo,
   setAccessTokensToServers,
   uploadVideo,
-  wait,
-  immutableAssign
-} from '../../../../shared/utils'
+  wait
+} from '../../../../shared/extra-utils'
+import { createVideoCaption } from '../../../../shared/extra-utils/videos/video-captions'
 
 const expect = chai.expect
 
-describe('Test videos search', function () {
+describe('Test videos search', function () {
   let server: ServerInfo = null
   let startDate: string
+  let videoUUID: string
 
   before(async function () {
-    this.timeout(30000)
+    this.timeout(60000)
 
-    await flushTests()
-
-    server = await runServer(1)
+    server = await flushAndRunServer(1)
 
     await setAccessTokensToServers([ server ])
 
@@ -44,8 +43,30 @@ describe('Test a videos search', function () {
       const attributes2 = immutableAssign(attributes1, { name: attributes1.name + ' - 2', fixture: 'video_short.mp4' })
       await uploadVideo(server.url, server.accessToken, attributes2)
 
-      const attributes3 = immutableAssign(attributes1, { name: attributes1.name + ' - 3', language: 'en' })
-      await uploadVideo(server.url, server.accessToken, attributes3)
+      {
+        const attributes3 = immutableAssign(attributes1, { name: attributes1.name + ' - 3', language: undefined })
+        const res = await uploadVideo(server.url, server.accessToken, attributes3)
+        const videoId = res.body.video.id
+        videoUUID = res.body.video.uuid
+
+        await createVideoCaption({
+          url: server.url,
+          accessToken: server.accessToken,
+          language: 'en',
+          videoId,
+          fixture: 'subtitle-good2.vtt',
+          mimeType: 'application/octet-stream'
+        })
+
+        await createVideoCaption({
+          url: server.url,
+          accessToken: server.accessToken,
+          language: 'aa',
+          videoId,
+          fixture: 'subtitle-good2.vtt',
+          mimeType: 'application/octet-stream'
+        })
+      }
 
       const attributes4 = immutableAssign(attributes1, { name: attributes1.name + ' - 4', language: 'pl', nsfw: true })
       await uploadVideo(server.url, server.accessToken, attributes4)
@@ -54,13 +75,16 @@ describe('Test a videos search', function () {
 
       startDate = new Date().toISOString()
 
-      const attributes5 = immutableAssign(attributes1, { name: attributes1.name + ' - 5', licence: 2 })
+      const attributes5 = immutableAssign(attributes1, { name: attributes1.name + ' - 5', licence: 2, language: undefined })
       await uploadVideo(server.url, server.accessToken, attributes5)
 
-      const attributes6 = immutableAssign(attributes1, { name: attributes1.name + ' - 6', tags: [ 't1', 't2 '] })
+      const attributes6 = immutableAssign(attributes1, { name: attributes1.name + ' - 6', tags: [ 't1', 't2] })
       await uploadVideo(server.url, server.accessToken, attributes6)
 
-      const attributes7 = immutableAssign(attributes1, { name: attributes1.name + ' - 7' })
+      const attributes7 = immutableAssign(attributes1, {
+        name: attributes1.name + ' - 7',
+        originallyPublishedAt: '2019-02-12T09:58:08.286Z'
+      })
       await uploadVideo(server.url, server.accessToken, attributes7)
 
       const attributes8 = immutableAssign(attributes1, { name: attributes1.name + ' - 8', licence: 4 })
@@ -184,7 +208,7 @@ describe('Test a videos search', function () {
     const query = {
       search: '9999',
       categoryOneOf: [ 1 ],
-      tagsOneOf: [ 'aaaa', 'ffff' ]
+      tagsOneOf: [ 'aAaa', 'ffff' ]
     }
     const res1 = await advancedVideosSearch(server.url, query)
     expect(res1.body.total).to.equal(2)
@@ -197,15 +221,15 @@ describe('Test a videos search', function () {
     const query = {
       search: '9999',
       categoryOneOf: [ 1 ],
-      tagsAllOf: [ 'cccc' ]
+      tagsAllOf: [ 'CCcc' ]
     }
     const res1 = await advancedVideosSearch(server.url, query)
     expect(res1.body.total).to.equal(2)
 
-    const res2 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'blabla' ] }))
+    const res2 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'blAbla' ] }))
     expect(res2.body.total).to.equal(0)
 
-    const res3 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'bbbb', 'cccc' ] }))
+    const res3 = await advancedVideosSearch(server.url, immutableAssign(query, { tagsAllOf: [ 'bbbb', 'CCCC' ] }))
     expect(res3.body.total).to.equal(1)
   })
 
@@ -241,13 +265,26 @@ describe('Test a videos search', function () {
       search: '1111 2222 3333',
       languageOneOf: [ 'pl', 'en' ]
     }
-    const res1 = await advancedVideosSearch(server.url, query)
-    expect(res1.body.total).to.equal(2)
-    expect(res1.body.data[0].name).to.equal('1111 2222 3333 - 3')
-    expect(res1.body.data[1].name).to.equal('1111 2222 3333 - 4')
 
-    const res2 = await advancedVideosSearch(server.url, immutableAssign(query, { languageOneOf: [ 'eo' ] }))
-    expect(res2.body.total).to.equal(0)
+    {
+      const res = await advancedVideosSearch(server.url, query)
+      expect(res.body.total).to.equal(2)
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 3')
+      expect(res.body.data[1].name).to.equal('1111 2222 3333 - 4')
+    }
+
+    {
+      const res = await advancedVideosSearch(server.url, immutableAssign(query, { languageOneOf: [ 'pl', 'en', '_unknown' ] }))
+      expect(res.body.total).to.equal(3)
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 3')
+      expect(res.body.data[1].name).to.equal('1111 2222 3333 - 4')
+      expect(res.body.data[2].name).to.equal('1111 2222 3333 - 5')
+    }
+
+    {
+      const res = await advancedVideosSearch(server.url, immutableAssign(query, { languageOneOf: [ 'eo' ] }))
+      expect(res.body.total).to.equal(0)
+    }
   })
 
   it('Should search by start date', async function () {
@@ -343,12 +380,76 @@ describe('Test a videos search', function () {
     expect(videos[0].name).to.equal('1111 2222 3333')
   })
 
-  after(async function () {
-    killallServers([ server ])
+  it('Should search on originally published date', async function () {
+    const baseQuery = {
+      search: '1111 2222 3333',
+      languageOneOf: [ 'pl', 'fr' ],
+      durationMax: 4,
+      nsfw: 'false' as 'false',
+      licenceOneOf: [ 1, 4 ]
+    }
+
+    {
+      const query = immutableAssign(baseQuery, { originallyPublishedStartDate: '2019-02-11T09:58:08.286Z' })
+      const res = await advancedVideosSearch(server.url, query)
+
+      expect(res.body.total).to.equal(1)
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 7')
+    }
 
-    // Keep the logs if the test failed
-    if (this['ok']) {
-      await flushTests()
+    {
+      const query = immutableAssign(baseQuery, { originallyPublishedEndDate: '2019-03-11T09:58:08.286Z' })
+      const res = await advancedVideosSearch(server.url, query)
+
+      expect(res.body.total).to.equal(1)
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 7')
+    }
+
+    {
+      const query = immutableAssign(baseQuery, { originallyPublishedEndDate: '2019-01-11T09:58:08.286Z' })
+      const res = await advancedVideosSearch(server.url, query)
+
+      expect(res.body.total).to.equal(0)
+    }
+
+    {
+      const query = immutableAssign(baseQuery, { originallyPublishedStartDate: '2019-03-11T09:58:08.286Z' })
+      const res = await advancedVideosSearch(server.url, query)
+
+      expect(res.body.total).to.equal(0)
+    }
+
+    {
+      const query = immutableAssign(baseQuery, {
+        originallyPublishedStartDate: '2019-01-11T09:58:08.286Z',
+        originallyPublishedEndDate: '2019-01-10T09:58:08.286Z'
+      })
+      const res = await advancedVideosSearch(server.url, query)
+
+      expect(res.body.total).to.equal(0)
+    }
+
+    {
+      const query = immutableAssign(baseQuery, {
+        originallyPublishedStartDate: '2019-01-11T09:58:08.286Z',
+        originallyPublishedEndDate: '2019-04-11T09:58:08.286Z'
+      })
+      const res = await advancedVideosSearch(server.url, query)
+
+      expect(res.body.total).to.equal(1)
+      expect(res.body.data[0].name).to.equal('1111 2222 3333 - 7')
     }
   })
+
+  it('Should search by UUID', async function () {
+    const search = videoUUID
+    const res = await advancedVideosSearch(server.url, { search })
+
+    expect(res.body.total).to.equal(1)
+    expect(res.body.data[0].name).to.equal('1111 2222 3333 - 3')
+  })
+
+  after(async function () {
+    await cleanupTests([ server ])
+  })
 })