From a3b472a12ec6e57dbe2f650419f8064864686eab Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 10 Aug 2022 11:51:13 +0200 Subject: Add ability to list imports of a channel sync --- server/tests/api/videos/channel-import-videos.ts | 72 +++++++++++++++++++++++- server/tests/api/videos/video-channel-syncs.ts | 12 ++++ server/tests/api/videos/video-imports.ts | 9 +++ 3 files changed, 92 insertions(+), 1 deletion(-) (limited to 'server/tests/api/videos') diff --git a/server/tests/api/videos/channel-import-videos.ts b/server/tests/api/videos/channel-import-videos.ts index f7540e1ba..7cfd02fbb 100644 --- a/server/tests/api/videos/channel-import-videos.ts +++ b/server/tests/api/videos/channel-import-videos.ts @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ + import { expect } from 'chai' import { FIXTURE_URLS } from '@server/tests/shared' import { areHttpImportTestsDisabled } from '@shared/core-utils' @@ -29,7 +31,7 @@ describe('Test videos import in a channel', function () { await server.config.enableChannelSync() }) - it('Should import a whole channel', async function () { + it('Should import a whole channel without specifying the sync id', async function () { this.timeout(240_000) await server.channels.importVideos({ channelName: server.store.channel.name, externalChannelUrl: FIXTURE_URLS.youtubeChannel }) @@ -39,6 +41,74 @@ describe('Test videos import in a channel', function () { expect(videos.total).to.equal(2) }) + it('These imports should not have a sync id', async function () { + const { total, data } = await server.imports.getMyVideoImports() + + expect(total).to.equal(2) + expect(data).to.have.lengthOf(2) + + for (const videoImport of data) { + expect(videoImport.videoChannelSync).to.not.exist + } + }) + + it('Should import a whole channel and specifying the sync id', async function () { + this.timeout(240_000) + + { + server.store.channel.name = 'channel2' + const { id } = await server.channels.create({ attributes: { name: server.store.channel.name } }) + server.store.channel.id = id + } + + { + const attributes = { + externalChannelUrl: FIXTURE_URLS.youtubeChannel, + videoChannelId: server.store.channel.id + } + + const { videoChannelSync } = await server.channelSyncs.create({ attributes }) + server.store.videoChannelSync = videoChannelSync + + await waitJobs(server) + } + + await server.channels.importVideos({ + channelName: server.store.channel.name, + externalChannelUrl: FIXTURE_URLS.youtubeChannel, + videoChannelSyncId: server.store.videoChannelSync.id + }) + + await waitJobs(server) + }) + + it('These imports should have a sync id', async function () { + const { total, data } = await server.imports.getMyVideoImports() + + expect(total).to.equal(4) + expect(data).to.have.lengthOf(4) + + const importsWithSyncId = data.filter(i => !!i.videoChannelSync) + expect(importsWithSyncId).to.have.lengthOf(2) + + for (const videoImport of importsWithSyncId) { + expect(videoImport.videoChannelSync).to.exist + expect(videoImport.videoChannelSync.id).to.equal(server.store.videoChannelSync.id) + } + }) + + it('Should be able to filter imports by this sync id', async function () { + const { total, data } = await server.imports.getMyVideoImports({ videoChannelSyncId: server.store.videoChannelSync.id }) + + expect(total).to.equal(2) + expect(data).to.have.lengthOf(2) + + for (const videoImport of data) { + expect(videoImport.videoChannelSync).to.exist + expect(videoImport.videoChannelSync.id).to.equal(server.store.videoChannelSync.id) + } + }) + after(async function () { await server?.kill() }) diff --git a/server/tests/api/videos/video-channel-syncs.ts b/server/tests/api/videos/video-channel-syncs.ts index 229c01f68..835d3cb09 100644 --- a/server/tests/api/videos/video-channel-syncs.ts +++ b/server/tests/api/videos/video-channel-syncs.ts @@ -23,7 +23,10 @@ describe('Test channel synchronizations', function () { describe('Sync using ' + mode, function () { let server: PeerTubeServer let command: ChannelSyncsCommand + let startTestDate: Date + + let rootChannelSyncId: number const userInfo = { accessToken: '', username: 'user1', @@ -90,6 +93,7 @@ describe('Test channel synchronizations', function () { token: server.accessToken, expectedStatus: HttpStatusCode.OK_200 }) + rootChannelSyncId = videoChannelSync.id // Ensure any missing video not already fetched will be considered as new await changeDateForSync(videoChannelSync.id, '1970-01-01') @@ -208,6 +212,14 @@ describe('Test channel synchronizations', function () { } }) + it('Should list imports of a channel synchronization', async function () { + const { total, data } = await server.imports.getMyVideoImports({ videoChannelSyncId: rootChannelSyncId }) + + expect(total).to.equal(1) + expect(data).to.have.lengthOf(1) + expect(data[0].video.name).to.equal('test') + }) + it('Should remove user\'s channel synchronizations', async function () { await command.delete({ channelSyncId: userInfo.syncId }) diff --git a/server/tests/api/videos/video-imports.ts b/server/tests/api/videos/video-imports.ts index a487062a2..f082d4bd7 100644 --- a/server/tests/api/videos/video-imports.ts +++ b/server/tests/api/videos/video-imports.ts @@ -228,6 +228,15 @@ describe('Test video imports', function () { expect(videoImports[0].targetUrl).to.equal(FIXTURE_URLS.youtube) }) + it('Should search in my imports', async function () { + const { total, data: videoImports } = await servers[0].imports.getMyVideoImports({ search: 'peertube2' }) + expect(total).to.equal(1) + expect(videoImports).to.have.lengthOf(1) + + expect(videoImports[0].magnetUri).to.equal(FIXTURE_URLS.magnet) + expect(videoImports[0].video.name).to.equal('super peertube2 video') + }) + it('Should have the video listed on the two instances', async function () { this.timeout(120_000) -- cgit v1.2.3