def test_get_file__none(self): """ If there are no files, get_file() should return None. """ video = Video("http://www.youtube.com/watch?v=J_DV9b0x7v4") video.files = None self.assertTrue(video.get_file() is None) video.files = [] self.assertTrue(video.get_file() is None)
def test_get_file__no_mimetypes(self): """ If none of the videos have mime types, the first file should be returned. """ video = Video("http://www.youtube.com/watch?v=J_DV9b0x7v4") file1 = VideoFile(url='http://google.com') file2 = VideoFile(url='http://xkcd.com') file3 = VideoFile(url='http://example.com') video.files = [file1, file2, file3] self.assertEqual(video.get_file(), file1) video.files = [file3, file2, file1] self.assertEqual(video.get_file(), file3)
def test_get_file__open(self): """ Tests that open video formats are preferred over proprietary. """ video = Video("http://www.youtube.com/watch?v=J_DV9b0x7v4") file1 = VideoFile(url='http://google.com', mime_type="video/ogg") file2 = VideoFile(url='http://xkcd.com', mime_type="application/x-shockwave-flash") file3 = VideoFile(url='http://example.com', mime_type="video/mp4") video.files = [file1, file2, file3] self.assertEqual(video.get_file(), file1) video.files = [file3, file2, file1] self.assertEqual(video.get_file(), file1)
def test_serialize__files(self): """ Tests that a video with associated files can still be serialized and deserialized. """ video = Video("http://www.youtube.com/watch?v=J_DV9b0x7v4") now = datetime.datetime.now() video.files = [VideoFile(url='http://google.com', expires=now, length=100, width=50, height=50, mime_type="video/x-flv"), VideoFile(url='http://xkcd.com', expires=now, length=75, width=80, height=80, mime_type="application/x-shockwave-flash"),] data = video.serialize() # verify that the data we expect is in the serialized version. self.assertEqual(data['files'][0]['url'], "http://google.com") self.assertEqual(data['files'][1]['mime_type'], "application/x-shockwave-flash") self.assertEqual(data['files'][0]['expires'], now.isoformat()) # Verify that the data can be deserialized as a video. new_video = Video.deserialize(data) self.assertEqual(dict(video.items()), dict(new_video.items()))
def test_form_valid__scraped__file_url(self): """ Checks that, if the form represents a scraped video with a file_url, the success_url is the url of the scraped_video view, and that the session data contains the scraped video as 'video' and the video's url as 'url'. """ scraped_url = reverse('localtv_submit_scraped_video') view = SubmitURLView(scraped_url=scraped_url) video_url = "http://google.com" url = "%s?url=%s" % (reverse('localtv_submit_video'), video_url) view.request = self.factory.get(url) expected_success_url = "%s?%s" % (scraped_url, view.request.GET.urlencode()) form = view.get_form(view.get_form_class()) video = VidscraperVideo(video_url) video.embed_code = None video.files = [VidscraperVideoFile(url="blink")] form.video_cache = video form.cleaned_data = {'url': video_url} view.form_valid(form) self.assertEqual(view.request.session[view.get_session_key()], {'video': video, 'url': video_url}) self.assertEqual(view.success_url, expected_success_url)
def test_form_valid__scraped__file_url(self): """ Checks that, if the form represents a scraped video with a file_url, the success_url is the url of the scraped_video view, and that the session data contains the scraped video as 'video' and the video's url as 'url'. """ scraped_url = reverse('localtv_submit_scraped_video') view = SubmitURLView(scraped_url=scraped_url) video_url = "http://google.com" url = "%s?url=%s" % (reverse('localtv_submit_video'), video_url) view.request = self.factory.get(url) expected_success_url = "%s?%s" % (scraped_url, view.request.GET.urlencode()) form = view.get_form(view.get_form_class()) video = VidscraperVideo(video_url) video.embed_code = None video.files = [VidscraperVideoFile(url="blink")] form.video_cache = video form.cleaned_data = {'url': video_url} view.form_valid(form) self.assertEqual(view.request.session[view.get_session_key()], { 'video': video, 'url': video_url }) self.assertEqual(view.success_url, expected_success_url)