X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fsearch%2Fsearch-videos.ts;h=e05c3a2691d07641bea71746ec5b58631814066d;hb=9129b7694d577322327ee79e9b9aa64deee92765;hp=7fc133b468b94e659920f7358d1ceff644b2e594;hpb=d525fc399a14a8b16eaad6d4c0bc0a9c4093c3c9;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/search/search-videos.ts b/server/tests/api/search/search-videos.ts index 7fc133b46..e05c3a269 100644 --- a/server/tests/api/search/search-videos.ts +++ b/server/tests/api/search/search-videos.ts @@ -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 '../../utils' + wait +} from '../../../../shared/extra-utils' +import { createVideoCaption } from '../../../../shared/extra-utils/videos/video-captions' const expect = chai.expect -describe('Test a 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 }) @@ -103,6 +127,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,11 +158,57 @@ 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', categoryOneOf: [ 1 ], - tagsOneOf: [ 'aaaa', 'ffff' ] + tagsOneOf: [ 'aAaa', 'ffff' ] } const res1 = await advancedVideosSearch(server.url, query) expect(res1.body.total).to.equal(2) @@ -142,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) }) @@ -186,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 () { @@ -216,7 +308,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 +327,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 +347,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 +366,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,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') + } + + { + const query = immutableAssign(baseQuery, { originallyPublishedEndDate: '2019-03-11T09:58:08.286Z' }) + const res = await advancedVideosSearch(server.url, query) - // Keep the logs if the test failed - if (this['ok']) { - await flushTests() + 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 ]) }) })