mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
40 lines
1.9 KiB
Python
40 lines
1.9 KiB
Python
import pytest
|
|
|
|
from modules.videos.downloader import ChannelDownloader
|
|
from modules.videos.models import ChannelDownload
|
|
from wrolpi.downloader import Download, RSSDownloader
|
|
from wrolpi.migration import migrate_channel_downloads
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
def test_channel_channel_downloads_migration(test_async_client, test_session, channel_factory, test_download_manager):
|
|
"""Test the 8d0d81bc9c34_channel_channel_downloads.py migration."""
|
|
# A simple Channel which has a download for its URL.
|
|
channel1 = channel_factory(url='https://example.com/channel1')
|
|
# A Channel which has two Downloads. One for it's URL, another which is an RSS feed in its directory.
|
|
channel2 = channel_factory(url='https://example.com/channel2')
|
|
download1 = Download(url=channel1.url, downloader=ChannelDownloader.name)
|
|
download2a = Download(url='https://example.com/channel2/rss', downloader=RSSDownloader.name,
|
|
settings=dict(destination=str(channel2.directory)))
|
|
download2b = Download(url='https://example.com/channel2', downloader=ChannelDownloader.name,
|
|
settings=dict(destination=str(channel2.directory)))
|
|
# A Channel which has a URL, but no Downloads.
|
|
channel3 = channel_factory()
|
|
test_session.add_all([download1, download2a, download2b])
|
|
test_session.commit()
|
|
|
|
assert not channel1.channel_downloads
|
|
assert channel2.directory and not channel2.channel_downloads
|
|
assert not channel3.channel_downloads
|
|
|
|
migrate_channel_downloads(test_session)
|
|
|
|
assert channel1.channel_downloads
|
|
assert channel2.channel_downloads
|
|
assert not channel3.channel_downloads
|
|
|
|
assert test_session.query(ChannelDownload).count() == 3
|
|
cd1, cd2a, cd2b = test_session.query(ChannelDownload).order_by(ChannelDownload.download_url).all()
|
|
assert cd1.download_url == channel1.url
|
|
assert cd2a.download_url == 'https://example.com/channel2'
|
|
assert cd2b.download_url == 'https://example.com/channel2/rss'
|