Adding intro and outro.
[audio.git] / src / youtube / tests.py
1 from unittest import mock
2 from django.test import TestCase
3 from archive.models import Audiobook
4 from . import tasks
5
6
7 @mock.patch("youtube.models.youtube_call")
8 @mock.patch("youtube.utils.subprocess")
9 @mock.patch("youtube.models.concat_audio")
10 @mock.patch("youtube.models.unlink")
11 @mock.patch("youtube.models.YouTube.prepare_thumbnail")
12 class YouTubeTests(TestCase):
13     fixtures = ["tests.yaml"]
14
15     def test_youtube_volumes(
16         self, prepare_thumbnail, unlink, concat_audio, subprocess, youtube_call
17     ):
18         youtube_call.return_value = mock.Mock(
19             json=mock.Mock(return_value={"id": "deadbeef"})
20         )
21         audiobooks = Audiobook.objects.all().order_by("index")
22
23         self.assertEqual(audiobooks[0].youtube_volume_count, 3)
24         self.assertEqual([a.youtube_volume_index for a in audiobooks], [1, 2, 2, 3])
25         self.assertEqual(
26             [a.is_youtube_publishable for a in audiobooks], [True, True, False, True]
27         )
28
29         tasks.YouTubeTask().run(None, 2, True)
30
31         # In creating a volume of two audiobooks, we should've called concat with a list of two files.
32         self.assertEqual(len(concat_audio.call_args[0][0]), 2)