transcript import export
EDUCATOR-1216
This commit is contained in:
committed by
muzaffaryousaf
parent
538a3d7801
commit
845bb7b884
@@ -9,7 +9,15 @@ import ddt
|
||||
from django.conf import settings
|
||||
from django.test import TestCase
|
||||
from django.test.utils import override_settings
|
||||
from edxval.api import ValCannotCreateError, ValVideoNotFoundError, create_profile, create_video, get_video_info
|
||||
from edxval.api import (
|
||||
ValCannotCreateError,
|
||||
ValVideoNotFoundError,
|
||||
create_or_update_video_transcript,
|
||||
create_profile,
|
||||
create_video,
|
||||
get_video_info,
|
||||
get_video_transcript
|
||||
)
|
||||
from lxml import etree
|
||||
from mock import MagicMock, Mock, patch
|
||||
from nose.plugins.attrib import attr
|
||||
@@ -1453,6 +1461,15 @@ class VideoDescriptorTest(TestCase, VideoDescriptorTestBase):
|
||||
self.descriptor.runtime.handler_url = MagicMock()
|
||||
self.descriptor.runtime.course_id = MagicMock()
|
||||
|
||||
def get_video_transcript_data(self, video_id):
|
||||
return dict(
|
||||
video_id=video_id,
|
||||
language_code='ar',
|
||||
url='/media/ext101.srt',
|
||||
provider='Cielo24',
|
||||
file_format='srt',
|
||||
)
|
||||
|
||||
def test_get_context(self):
|
||||
""""
|
||||
Test get_context.
|
||||
@@ -1480,7 +1497,7 @@ class VideoDescriptorTest(TestCase, VideoDescriptorTestBase):
|
||||
self.descriptor.editable_metadata_fields['edx_video_id']
|
||||
)
|
||||
|
||||
def test_export_val_data(self):
|
||||
def test_export_val_data_with_internal(self):
|
||||
self.descriptor.edx_video_id = 'test_edx_video_id'
|
||||
create_profile('mobile')
|
||||
create_video({
|
||||
@@ -1495,15 +1512,52 @@ class VideoDescriptorTest(TestCase, VideoDescriptorTestBase):
|
||||
'bitrate': 333,
|
||||
}],
|
||||
})
|
||||
create_or_update_video_transcript(
|
||||
video_id=self.descriptor.edx_video_id,
|
||||
language_code='ar',
|
||||
file_name='ext101.srt',
|
||||
file_format='srt',
|
||||
provider='Cielo24',
|
||||
)
|
||||
|
||||
actual = self.descriptor.definition_to_xml(resource_fs=None)
|
||||
expected_str = """
|
||||
<video download_video="false" url_name="SampleProblem">
|
||||
<video_asset client_video_id="test_client_video_id" duration="111.0" image="">
|
||||
<encoded_video profile="mobile" url="http://example.com/video" file_size="222" bitrate="333"/>
|
||||
<transcripts>
|
||||
<transcript file_format="srt" file_name="ext101.srt" language_code="ar" provider="Cielo24" video_id="{video_id}"/>
|
||||
</transcripts>
|
||||
</video_asset>
|
||||
</video>
|
||||
""".format(video_id=self.descriptor.edx_video_id)
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
expected = etree.XML(expected_str, parser=parser)
|
||||
self.assertXmlEqual(expected, actual)
|
||||
|
||||
def test_export_val_data_with_external(self):
|
||||
"""
|
||||
Tests exported val data for external video.
|
||||
"""
|
||||
external_video_id = '3_yD_cEKoCk'
|
||||
create_or_update_video_transcript(
|
||||
video_id=external_video_id,
|
||||
language_code='ar',
|
||||
file_name='ext101.srt',
|
||||
file_format='srt',
|
||||
provider='Cielo24',
|
||||
)
|
||||
|
||||
actual = self.descriptor.definition_to_xml(resource_fs=None)
|
||||
expected_str = """
|
||||
<video url_name="SampleProblem" download_video="false">
|
||||
<video_asset>
|
||||
<transcripts>
|
||||
<transcript file_format="srt" file_name="ext101.srt" language_code="ar" provider="Cielo24" video_id="{video_id}"/>
|
||||
</transcripts>
|
||||
</video_asset>
|
||||
</video>
|
||||
""".format(video_id=external_video_id)
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
expected = etree.XML(expected_str, parser=parser)
|
||||
self.assertXmlEqual(expected, actual)
|
||||
@@ -1516,7 +1570,21 @@ class VideoDescriptorTest(TestCase, VideoDescriptorTestBase):
|
||||
expected = etree.XML(expected_str, parser=parser)
|
||||
self.assertXmlEqual(expected, actual)
|
||||
|
||||
def test_import_val_data(self):
|
||||
@patch('xmodule.video_module.transcripts_utils.get_video_ids_info')
|
||||
def test_export_no_video_ids(self, mock_get_video_ids_info):
|
||||
"""
|
||||
Tests export when there are no video ids
|
||||
"""
|
||||
mock_get_video_ids_info.return_value = True, []
|
||||
|
||||
actual = self.descriptor.definition_to_xml(resource_fs=None)
|
||||
expected_str = '<video url_name="SampleProblem" download_video="false"><video_asset/></video>'
|
||||
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
expected = etree.XML(expected_str, parser=parser)
|
||||
self.assertXmlEqual(expected, actual)
|
||||
|
||||
def test_import_val_data_internal(self):
|
||||
create_profile('mobile')
|
||||
module_system = DummySystem(load_error_modules=True)
|
||||
|
||||
@@ -1524,12 +1592,15 @@ class VideoDescriptorTest(TestCase, VideoDescriptorTestBase):
|
||||
<video edx_video_id="test_edx_video_id">
|
||||
<video_asset client_video_id="test_client_video_id" duration="111.0">
|
||||
<encoded_video profile="mobile" url="http://example.com/video" file_size="222" bitrate="333"/>
|
||||
<transcripts>
|
||||
<transcript file_format="srt" file_name="ext101.srt" language_code="ar" provider="Cielo24" video_id="test_edx_video_id"/>
|
||||
</transcripts>
|
||||
</video_asset>
|
||||
</video>
|
||||
"""
|
||||
id_generator = Mock()
|
||||
id_generator.target_course_id = "test_course_id"
|
||||
video = VideoDescriptor.from_xml(xml_data, module_system, id_generator)
|
||||
video = self.descriptor.from_xml(xml_data, module_system, id_generator)
|
||||
self.assertEqual(video.edx_video_id, 'test_edx_video_id')
|
||||
video_data = get_video_info(video.edx_video_id)
|
||||
self.assertEqual(video_data['client_video_id'], 'test_client_video_id')
|
||||
@@ -1540,6 +1611,38 @@ class VideoDescriptorTest(TestCase, VideoDescriptorTestBase):
|
||||
self.assertEqual(video_data['encoded_videos'][0]['url'], 'http://example.com/video')
|
||||
self.assertEqual(video_data['encoded_videos'][0]['file_size'], 222)
|
||||
self.assertEqual(video_data['encoded_videos'][0]['bitrate'], 333)
|
||||
# verify transcript data
|
||||
self.assertDictEqual(
|
||||
get_video_transcript(video.edx_video_id, 'ar'),
|
||||
self.get_video_transcript_data('test_edx_video_id')
|
||||
)
|
||||
|
||||
def test_import_val_data_external(self):
|
||||
"""
|
||||
Tests video import with external video.
|
||||
"""
|
||||
external_video_id = 'external_video_id'
|
||||
module_system = DummySystem(load_error_modules=True)
|
||||
|
||||
xml_data = """
|
||||
<video>
|
||||
<video_asset>
|
||||
<transcripts>
|
||||
<transcript file_format="srt" file_name="ext101.srt" language_code="ar" provider="Cielo24" video_id="{video_id}"/>
|
||||
</transcripts>
|
||||
</video_asset>
|
||||
</video>
|
||||
""".format(video_id=external_video_id)
|
||||
|
||||
id_generator = Mock()
|
||||
id_generator.target_course_id = "test_course_id"
|
||||
self.descriptor.from_xml(xml_data, module_system, id_generator)
|
||||
|
||||
# verify transcript data
|
||||
self.assertDictEqual(
|
||||
get_video_transcript(external_video_id, 'ar'),
|
||||
self.get_video_transcript_data(external_video_id)
|
||||
)
|
||||
|
||||
def test_import_val_data_invalid(self):
|
||||
create_profile('mobile')
|
||||
|
||||
Reference in New Issue
Block a user