]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/search/search-videos.ts
Add ability to remove an instance follower in API
[github/Chocobozzz/PeerTube.git] / server / tests / api / search / search-videos.ts
index 7fc133b468b94e659920f7358d1ceff644b2e594..fa4078b99ff6ac41c9a95b3cb8eb9dd9eaac2aa3 100644 (file)
@@ -13,7 +13,7 @@ import {
   uploadVideo,
   wait,
   immutableAssign
-} from '../../utils'
+} from '../../../../shared/utils'
 
 const expect = chai.expect
 
@@ -60,7 +60,10 @@ describe('Test a videos search', function () {
       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 })
@@ -103,6 +106,15 @@ describe('Test a videos search', function () {
       await uploadVideo(server.url, server.accessToken, immutableAssign(attributes1, { tags: [ 'cccc', 'dddd' ] }))
       await uploadVideo(server.url, server.accessToken, immutableAssign(attributes1, { tags: [ 'eeee', 'ffff' ] }))
     }
+
+    {
+      const attributes1 = {
+        name: 'aaaa 2',
+        category: 1
+      }
+      await uploadVideo(server.url, server.accessToken, attributes1)
+      await uploadVideo(server.url, server.accessToken, immutableAssign(attributes1, { category: 2 }))
+    }
   })
 
   it('Should make a simple search and not have results', async function () {
@@ -125,6 +137,52 @@ describe('Test a videos search', function () {
     expect(videos[1].name).to.equal('3333 4444 5555')
   })
 
+  it('Should make a search on tags too, and have results', async function () {
+    const query = {
+      search: 'aaaa',
+      categoryOneOf: [ 1 ]
+    }
+    const res = await advancedVideosSearch(server.url, query)
+
+    expect(res.body.total).to.equal(2)
+
+    const videos = res.body.data
+    expect(videos).to.have.lengthOf(2)
+
+    // bestmatch
+    expect(videos[0].name).to.equal('aaaa 2')
+    expect(videos[1].name).to.equal('9999')
+  })
+
+  it('Should filter on tags without a search', async function () {
+    const query = {
+      tagsAllOf: [ 'bbbb' ]
+    }
+    const res = await advancedVideosSearch(server.url, query)
+
+    expect(res.body.total).to.equal(2)
+
+    const videos = res.body.data
+    expect(videos).to.have.lengthOf(2)
+
+    expect(videos[0].name).to.equal('9999')
+    expect(videos[1].name).to.equal('9999')
+  })
+
+  it('Should filter on category without a search', async function () {
+    const query = {
+      categoryOneOf: [ 3 ]
+    }
+    const res = await advancedVideosSearch(server.url, query)
+
+    expect(res.body.total).to.equal(1)
+
+    const videos = res.body.data
+    expect(videos).to.have.lengthOf(1)
+
+    expect(videos[0].name).to.equal('6666 7777 8888')
+  })
+
   it('Should search by tags (one of)', async function () {
     const query = {
       search: '9999',
@@ -216,7 +274,7 @@ describe('Test a videos search', function () {
       search: '1111 2222 3333',
       languageOneOf: [ 'pl', 'fr' ],
       durationMax: 4,
-      nsfw: false,
+      nsfw: 'false' as 'false',
       licenceOneOf: [ 1, 4 ]
     }
 
@@ -235,7 +293,7 @@ describe('Test a videos search', function () {
       search: '1111 2222 3333',
       languageOneOf: [ 'pl', 'fr' ],
       durationMax: 4,
-      nsfw: false,
+      nsfw: 'false' as 'false',
       licenceOneOf: [ 1, 4 ],
       sort: '-name'
     }
@@ -255,7 +313,7 @@ describe('Test a videos search', function () {
       search: '1111 2222 3333',
       languageOneOf: [ 'pl', 'fr' ],
       durationMax: 4,
-      nsfw: false,
+      nsfw: 'false' as 'false',
       licenceOneOf: [ 1, 4 ],
       sort: '-name',
       start: 0,
@@ -274,7 +332,7 @@ describe('Test a videos search', function () {
       search: '1111 2222 3333',
       languageOneOf: [ 'pl', 'fr' ],
       durationMax: 4,
-      nsfw: false,
+      nsfw: 'false' as 'false',
       licenceOneOf: [ 1, 4 ],
       sort: '-name',
       start: 3,
@@ -288,6 +346,67 @@ describe('Test a videos search', function () {
     expect(videos[0].name).to.equal('1111 2222 3333')
   })
 
+  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')
+    }
+
+    {
+      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')
+    }
+  })
+
   after(async function () {
     killallServers([ server ])