ytdl-sub/tests/e2e/conftest.py
Jesse Bannon 10b58264ea
[BACKEND] Update music video example with url download strategy (#312)
* [DOCS] document file __preset__

* [REFACTOR] Use `download` type in examples

* TODO: download strategy docs, validate fixtures, fix playlist test

* playlist fixed, fixtures look good

* download strategy docs, fix tests

* better docs

* lint

* yt fixed

* split chapters fixed

* fix video

* better docs

* lint
2022-11-11 08:54:07 -08:00

65 lines
1.7 KiB
Python

import sys
import tempfile
from typing import List
from typing import Tuple
from unittest.mock import patch
import pytest
from ytdl_sub.cli.main import main
from ytdl_sub.config.config_file import ConfigFile
from ytdl_sub.subscriptions.subscription import Subscription
from ytdl_sub.utils.file_handler import FileHandlerTransactionLog
@pytest.fixture()
def music_video_config_path():
return "examples/music_videos_config.yaml"
@pytest.fixture()
def music_video_config(music_video_config_path):
return ConfigFile.from_file_path(config_path=music_video_config_path)
@pytest.fixture()
def channel_as_tv_show_config():
return ConfigFile.from_file_path(config_path="examples/tv_show_config.yaml")
@pytest.fixture
def soundcloud_discography_config():
return ConfigFile.from_file_path(config_path="examples/soundcloud_discography_config.yaml")
@pytest.fixture()
def youtube_audio_config_path():
return "examples/music_audio_from_videos.yaml"
@pytest.fixture()
def youtube_audio_config(youtube_audio_config_path):
return ConfigFile.from_file_path(config_path=youtube_audio_config_path)
@pytest.fixture
def timestamps_file_path():
timestamps = [
"0:00 Intro\n",
"00:10 Part 1\n",
"0:20 Part 2\n",
"00:30 Part 3\n",
"0:00:40 Part 4\n",
"00:01:01 Part 5\n",
]
with tempfile.NamedTemporaryFile(mode="w", encoding="utf-8", suffix=".txt") as tmp:
tmp.writelines(timestamps)
tmp.seek(0)
yield tmp.name
def mock_run_from_cli(args: str) -> List[Tuple[Subscription, FileHandlerTransactionLog]]:
args_list = ["ytdl-sub"] + args.split()
with patch.object(sys, "argv", args_list):
return main()