diff --git a/tests/videodinges/factories.py b/tests/videodinges/factories.py
index 0867ab2..fffccd8 100644
--- a/tests/videodinges/factories.py
+++ b/tests/videodinges/factories.py
@@ -34,6 +34,13 @@ def create(model: Type[T], **kwargs) -> T:
if model is models.Upload:
return _create_with_defaults(models.Upload, kwargs, file=SimpleUploadedFile('some_file.txt', b'some contents'))
+ if model is models.Track:
+ return _create_with_defaults(models.Track, kwargs,
+ video=lambda: create(models.Video),
+ lang='en',
+ upload=lambda: create(models.Upload)
+ )
+
raise NotImplementedError('Factory for %s not implemented' % model)
diff --git a/tests/videodinges/views/test_video.py b/tests/videodinges/views/test_video.py
index b5dedb8..4804f36 100644
--- a/tests/videodinges/views/test_video.py
+++ b/tests/videodinges/views/test_video.py
@@ -246,3 +246,191 @@ class VideoTestCase(UploadMixin, TestCase):
)
+class VideoWithTrackTestCase(UploadMixin, TestCase):
+ def setUp(self):
+ super().setUp()
+ self.client = Client()
+ self.video = factories.create(
+ models.Video,
+ title='Vid 1',
+ slug='vid-1',
+ default_quality='480p',
+ )
+ factories.create(
+ models.Transcoding,
+ video=self.video,
+ quality='480p',
+ type='video/webm; codecs="vp9, opus"',
+ url='http://480p.webm',
+ )
+ factories.create(
+ models.Transcoding,
+ video=self.video,
+ quality='480p',
+ type='video/mp4',
+ url='http://480p.mp4',
+ )
+
+ def test_video_view_renders_track_properly(self):
+
+ factories.create(
+ models.Track,
+ video=self.video,
+ lang='en',
+ )
+
+ resp:HttpResponse = self.client.get(reverse('video', args=['vid-1']))
+
+ self.assertEqual(resp.status_code, 200)
+
+ content:str = resp.content.decode(resp.charset)
+
+ self.assertInHTML(
+ """""",
+ content,
+ )
+
+ def test_video_view_renders_multiple_tracks_properly(self):
+
+ track_en = factories.create(
+ models.Track,
+ video=self.video,
+ lang='en',
+ )
+
+ track_nl = factories.create(
+ models.Track,
+ video=self.video,
+ lang='nl',
+ )
+
+ resp:HttpResponse = self.client.get(reverse('video', args=['vid-1']))
+
+ self.assertEqual(resp.status_code, 200)
+
+ content:str = resp.content.decode(resp.charset)
+
+ self.assertInHTML(
+ f"""""",
+ content,
+ )
+
+
+ def test_video_view_renders_default_track_properly(self):
+
+ factories.create(
+ models.Track,
+ video=self.video,
+ lang='en',
+ default=True
+ )
+
+ resp:HttpResponse = self.client.get(reverse('video', args=['vid-1']))
+
+ self.assertEqual(resp.status_code, 200)
+
+ content:str = resp.content.decode(resp.charset)
+
+ self.assertInHTML(
+ """""",
+ content,
+ )
+
+ def test_video_view_renders_multiple_tracks_properly_with_one_default(self):
+
+ track_en = factories.create(
+ models.Track,
+ video=self.video,
+ lang='en',
+ default=True
+ )
+
+ track_nl = factories.create(
+ models.Track,
+ video=self.video,
+ lang='nl',
+ )
+
+ resp:HttpResponse = self.client.get(reverse('video', args=['vid-1']))
+
+ self.assertEqual(resp.status_code, 200)
+
+ content:str = resp.content.decode(resp.charset)
+
+ self.assertInHTML(
+ f"""""",
+ content,
+ )
+
+ def test_video_view_renders_track_label(self):
+
+ factories.create(
+ models.Track,
+ video=self.video,
+ lang='en',
+ label='Some Label',
+ )
+
+ resp:HttpResponse = self.client.get(reverse('video', args=['vid-1']))
+
+ self.assertEqual(resp.status_code, 200)
+
+ content:str = resp.content.decode(resp.charset)
+
+ self.assertInHTML(
+ """""",
+ content,
+ )
+
+
+ def test_video_view_renders_track_kind(self):
+
+ factories.create(
+ models.Track,
+ video=self.video,
+ lang='en',
+ kind='captions',
+ )
+
+ resp:HttpResponse = self.client.get(reverse('video', args=['vid-1']))
+
+ self.assertEqual(resp.status_code, 200)
+
+ content:str = resp.content.decode(resp.charset)
+
+ self.assertInHTML(
+ """""",
+ content,
+ )