diff --git a/tests/e2e/plugins/test_music_tags.py b/tests/e2e/plugins/test_music_tags.py deleted file mode 100644 index a5b13b68..00000000 --- a/tests/e2e/plugins/test_music_tags.py +++ /dev/null @@ -1,45 +0,0 @@ -import re - -import pytest - -from ytdl_sub.subscriptions.subscription import Subscription -from ytdl_sub.utils.exceptions import ValidationException - - -@pytest.fixture -def single_song_video_dict(output_directory): - return { - "download": "https://www.youtube.com/watch?v=2lAe1cqCOXo", - "output_options": {"output_directory": output_directory, "file_name": "will_error.mp4"}, - # test multi-tags - "music_tags": {"genres": ["multi_tag_1", "multi_tag_2"]}, - "format": "worst[ext=mp4]", # download the worst format so it is fast - "ytdl_options": { - "postprocessor_args": {"ffmpeg": ["-bitexact"]}, # Must add this for reproducibility - }, - } - - -class TestMusicTags: - def test_music_tags_errors_on_video( - self, - default_config, - single_song_video_dict, - output_directory, - ): - subscription = Subscription.from_dict( - config=default_config, - preset_name="single_song_test", - preset_dict=single_song_video_dict, - ) - - with pytest.raises( - ValidationException, - match=re.escape( - "Validation error in single_song_test.music_tags: music_tags plugin received a " - "video with the extension 'mp4'. Only audio files are supported for setting music " - "tags. Ensure you are converting the video to audio using the audio_extract " - "plugin." - ), - ): - subscription.download(dry_run=True) diff --git a/tests/unit/plugins/test_music_tags.py b/tests/unit/plugins/test_music_tags.py new file mode 100644 index 00000000..1f86c455 --- /dev/null +++ b/tests/unit/plugins/test_music_tags.py @@ -0,0 +1,48 @@ +import re + +import pytest + +from ytdl_sub.subscriptions.subscription import Subscription +from ytdl_sub.utils.exceptions import ValidationException + + +@pytest.fixture +def single_song_video_dict(output_directory): + return { + "download": "https://your.name.here", + "output_options": {"output_directory": output_directory, "file_name": "will_error.mp4"}, + # test multi-tags compile + "music_tags": {"genres": ["multi_tag_1", "multi_tag_2"]}, + } + + +class TestMusicTags: + def test_music_tags_errors_on_video( + self, + config, + single_song_video_dict, + output_directory, + subscription_name, + mock_download_collection_entries, + ): + subscription = Subscription.from_dict( + config=config, + preset_name=subscription_name, + preset_dict=single_song_video_dict, + ) + + with ( + mock_download_collection_entries( + is_youtube_channel=False, num_urls=1, is_extracted_audio=False, is_dry_run=True + ), + pytest.raises( + ValidationException, + match=re.escape( + f"Validation error in {subscription_name}.music_tags: music_tags plugin received a " + "video with the extension 'mp4'. Only audio files are supported for setting music " + "tags. Ensure you are converting the video to audio using the audio_extract " + "plugin." + ), + ), + ): + subscription.download(dry_run=True)