X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fsearch%2Fsearch-playlists.ts;h=a357674c289c84cd2fdcef62f965483a5f44d135;hb=17ecdf61ce1d374cc8ba17601b93c9bda08112b2;hp=5178845032032d7f588afaed1c836366408b695f;hpb=e6346d59e63135cf012ed18c102d3b0179ef565f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/search/search-playlists.ts b/server/tests/api/search/search-playlists.ts index 517884503..a357674c2 100644 --- a/server/tests/api/search/search-playlists.ts +++ b/server/tests/api/search/search-playlists.ts @@ -1,66 +1,83 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import 'mocha' -import * as chai from 'chai' +import { expect } from 'chai' import { VideoPlaylistPrivacy } from '@shared/models' import { cleanupTests, - flushAndRunServer, + createSingleServer, + doubleFollow, + PeerTubeServer, SearchCommand, - ServerInfo, setAccessTokensToServers, - setDefaultVideoChannel, - uploadVideoAndGetId -} from '../../../../shared/extra-utils' - -const expect = chai.expect + setDefaultAccountAvatar, + setDefaultChannelAvatar, + setDefaultVideoChannel +} from '@shared/server-commands' describe('Test playlists search', function () { - let server: ServerInfo = null + let server: PeerTubeServer + let remoteServer: PeerTubeServer let command: SearchCommand + let playlistUUID: string + let playlistShortUUID: string before(async function () { - this.timeout(30000) + this.timeout(120000) - server = await flushAndRunServer(1) + const servers = await Promise.all([ + createSingleServer(1), + createSingleServer(2) + ]) + server = servers[0] + remoteServer = servers[1] - await setAccessTokensToServers([ server ]) - await setDefaultVideoChannel([ server ]) + await setAccessTokensToServers([ remoteServer, server ]) + await setDefaultVideoChannel([ remoteServer, server ]) + await setDefaultChannelAvatar([ remoteServer, server ]) + await setDefaultAccountAvatar([ remoteServer, server ]) - const videoId = (await uploadVideoAndGetId({ server: server, videoName: 'video' })).uuid + await servers[1].config.disableTranscoding() { + const videoId = (await server.videos.upload()).uuid + const attributes = { displayName: 'Dr. Kenzo Tenma hospital videos', privacy: VideoPlaylistPrivacy.PUBLIC, - videoChannelId: server.videoChannel.id + videoChannelId: server.store.channel.id } - const created = await server.playlistsCommand.create({ attributes }) + const created = await server.playlists.create({ attributes }) + playlistUUID = created.uuid + playlistShortUUID = created.shortUUID - await server.playlistsCommand.addElement({ playlistId: created.id, attributes: { videoId } }) + await server.playlists.addElement({ playlistId: created.id, attributes: { videoId } }) } { + const videoId = (await remoteServer.videos.upload()).uuid + const attributes = { - displayName: 'Johan & Anna Libert musics', + displayName: 'Johan & Anna Libert music videos', privacy: VideoPlaylistPrivacy.PUBLIC, - videoChannelId: server.videoChannel.id + videoChannelId: remoteServer.store.channel.id } - const created = await server.playlistsCommand.create({ attributes }) + const created = await remoteServer.playlists.create({ attributes }) - await server.playlistsCommand.addElement({ playlistId: created.id, attributes: { videoId } }) + await remoteServer.playlists.addElement({ playlistId: created.id, attributes: { videoId } }) } { const attributes = { displayName: 'Inspector Lunge playlist', privacy: VideoPlaylistPrivacy.PUBLIC, - videoChannelId: server.videoChannel.id + videoChannelId: server.store.channel.id } - await server.playlistsCommand.create({ attributes }) + await server.playlists.create({ attributes }) } - command = server.searchCommand + await doubleFollow(server, remoteServer) + + command = server.search }) it('Should make a simple search and not have results', async function () { @@ -88,7 +105,7 @@ describe('Test playlists search', function () { { const search = { - search: 'Anna Livert', + search: 'Anna Livert music', start: 0, count: 1 } @@ -97,7 +114,52 @@ describe('Test playlists search', function () { expect(body.data).to.have.lengthOf(1) const playlist = body.data[0] - expect(playlist.displayName).to.equal('Johan & Anna Libert musics') + expect(playlist.displayName).to.equal('Johan & Anna Libert music videos') + } + }) + + it('Should filter by host', async function () { + { + const search = { search: 'tenma', host: server.host } + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(1) + expect(body.data).to.have.lengthOf(1) + + const playlist = body.data[0] + expect(playlist.displayName).to.equal('Dr. Kenzo Tenma hospital videos') + } + + { + const search = { search: 'Anna', host: 'example.com' } + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(0) + expect(body.data).to.have.lengthOf(0) + } + + { + const search = { search: 'video', host: remoteServer.host } + const body = await command.advancedPlaylistSearch({ search }) + expect(body.total).to.equal(1) + expect(body.data).to.have.lengthOf(1) + + const playlist = body.data[0] + expect(playlist.displayName).to.equal('Johan & Anna Libert music videos') + } + }) + + it('Should filter by UUIDs', async function () { + for (const uuid of [ playlistUUID, playlistShortUUID ]) { + const body = await command.advancedPlaylistSearch({ search: { uuids: [ uuid ] } }) + + expect(body.total).to.equal(1) + expect(body.data[0].displayName).to.equal('Dr. Kenzo Tenma hospital videos') + } + + { + const body = await command.advancedPlaylistSearch({ search: { uuids: [ 'dfd70b83-639f-4980-94af-304a56ab4b35' ] } }) + + expect(body.total).to.equal(0) + expect(body.data).to.have.lengthOf(0) } }) @@ -113,6 +175,6 @@ describe('Test playlists search', function () { }) after(async function () { - await cleanupTests([ server ]) + await cleanupTests([ server, remoteServer ]) }) })