Ejemplo n.º 1
0
    def test_import_val_data_invalid(self, mock_val_api):
        mock_val_api.ValCannotCreateError = _MockValCannotCreateError
        mock_val_api.import_from_xml = Mock(side_effect=mock_val_api.ValCannotCreateError)
        module_system = DummySystem(load_error_modules=True)

        # Negative duration is invalid
        xml_data = """
            <video edx_video_id="test_edx_video_id">
                <video_asset client_video_id="test_client_video_id" duration="-1"/>
            </video>
        """
        with self.assertRaises(mock_val_api.ValCannotCreateError):
            VideoBlock.from_xml(xml_data, module_system, id_generator=Mock())
Ejemplo n.º 2
0
 def test_import_with_float_times(self):
     """
     Ensure that Video is able to read VideoBlock's model data.
     """
     module_system = DummySystem(load_error_modules=True)
     xml_data = """
         <video display_name="Test Video"
                youtube="1.0:p2Q6BrNhdh8,0.75:izygArpw-Qo,1.25:1EeWXzPdhSA,1.5:rABDYkeK0x8"
                show_captions="false"
                from="1.0"
                to="60.0">
           <source src="http://www.example.com/source.mp4"/>
           <track src="http://www.example.com/track"/>
         </video>
     """
     video = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(video, {
         'youtube_id_0_75': 'izygArpw-Qo',
         'youtube_id_1_0': 'p2Q6BrNhdh8',
         'youtube_id_1_25': '1EeWXzPdhSA',
         'youtube_id_1_5': 'rABDYkeK0x8',
         'show_captions': False,
         'start_time': datetime.timedelta(seconds=1),
         'end_time': datetime.timedelta(seconds=60),
         'track': 'http://www.example.com/track',
         # 'download_track': True,
         'html5_sources': ['http://www.example.com/source.mp4'],
         'data': ''
     })
Ejemplo n.º 3
0
 def test_from_xml_missing_download_track(self):
     """
     Ensure that attributes have the right values if they aren't
     explicitly set in XML.
     """
     module_system = DummySystem(load_error_modules=True)
     xml_data = '''
         <video display_name="Test Video"
                youtube="1.0:p2Q6BrNhdh8,1.25:1EeWXzPdhSA"
                show_captions="true">
           <source src="http://www.example.com/source.mp4"/>
           <track src="http://www.example.com/track"/>
         </video>
     '''
     output = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(output, {
         'youtube_id_0_75': '',
         'youtube_id_1_0': 'p2Q6BrNhdh8',
         'youtube_id_1_25': '1EeWXzPdhSA',
         'youtube_id_1_5': '',
         'show_captions': True,
         'start_time': datetime.timedelta(seconds=0.0),
         'end_time': datetime.timedelta(seconds=0.0),
         'track': 'http://www.example.com/track',
         'download_track': True,
         'download_video': False,
         'html5_sources': ['http://www.example.com/source.mp4'],
         'data': '',
         'transcripts': {},
     })
Ejemplo n.º 4
0
 def test_old_video_format(self):
     """
     Test backwards compatibility with VideoBlock's XML format.
     """
     module_system = DummySystem(load_error_modules=True)
     xml_data = """
         <video display_name="Test Video"
                youtube="1.0:p2Q6BrNhdh8,0.75:izygArpw-Qo,1.25:1EeWXzPdhSA,1.5:rABDYkeK0x8"
                show_captions="false"
                source="http://www.example.com/source.mp4"
                from="00:00:01"
                to="00:01:00">
           <source src="http://www.example.com/source.mp4"/>
           <track src="http://www.example.com/track"/>
         </video>
     """
     output = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(output, {
         'youtube_id_0_75': 'izygArpw-Qo',
         'youtube_id_1_0': 'p2Q6BrNhdh8',
         'youtube_id_1_25': '1EeWXzPdhSA',
         'youtube_id_1_5': 'rABDYkeK0x8',
         'show_captions': False,
         'start_time': datetime.timedelta(seconds=1),
         'end_time': datetime.timedelta(seconds=60),
         'track': 'http://www.example.com/track',
         # 'download_track': True,
         'html5_sources': ['http://www.example.com/source.mp4'],
         'data': '',
     })
Ejemplo n.º 5
0
 def test_from_xml(self):
     module_system = DummySystem(load_error_modules=True)
     xml_data = '''
         <video display_name="Test Video"
                youtube="1.0:p2Q6BrNhdh8,0.75:izygArpw-Qo,1.25:1EeWXzPdhSA,1.5:rABDYkeK0x8"
                show_captions="false"
                download_track="false"
                start_time="00:00:01"
                download_video="false"
                end_time="00:01:00">
           <source src="http://www.example.com/source.mp4"/>
           <track src="http://www.example.com/track"/>
           <handout src="http://www.example.com/handout"/>
           <transcript language="uk" src="ukrainian_translation.srt" />
           <transcript language="de" src="german_translation.srt" />
         </video>
     '''
     output = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(output, {
         'youtube_id_0_75': 'izygArpw-Qo',
         'youtube_id_1_0': 'p2Q6BrNhdh8',
         'youtube_id_1_25': '1EeWXzPdhSA',
         'youtube_id_1_5': 'rABDYkeK0x8',
         'show_captions': False,
         'start_time': datetime.timedelta(seconds=1),
         'end_time': datetime.timedelta(seconds=60),
         'track': 'http://www.example.com/track',
         'handout': 'http://www.example.com/handout',
         'download_track': False,
         'download_video': False,
         'html5_sources': ['http://www.example.com/source.mp4'],
         'data': '',
         'transcripts': {'uk': 'ukrainian_translation.srt', 'de': 'german_translation.srt'},
     })
Ejemplo n.º 6
0
    def test_import_val_data(self, mock_val_api):
        """
        Test that `from_xml` works method works as expected.
        """
        def mock_val_import(xml, edx_video_id, resource_fs, static_dir, external_transcripts, course_id):
            """Mock edxval.api.import_from_xml"""
            self.assertEqual(xml.tag, 'video_asset')
            self.assertEqual(dict(list(xml.items())), {'mock_attr': ''})
            self.assertEqual(edx_video_id, 'test_edx_video_id')
            self.assertEqual(static_dir, EXPORT_IMPORT_STATIC_DIR)
            self.assertIsNotNone(resource_fs)
            self.assertEqual(external_transcripts, {u'en': [u'subs_3_yD_cEKoCk.srt.sjson']})
            self.assertEqual(course_id, 'test_course_id')
            return edx_video_id

        edx_video_id = 'test_edx_video_id'
        mock_val_api.import_from_xml = Mock(wraps=mock_val_import)
        module_system = DummySystem(load_error_modules=True)

        # Create static directory in import file system and place transcript files inside it.
        module_system.resources_fs.makedirs(EXPORT_IMPORT_STATIC_DIR, recreate=True)

        # import new edx_video_id
        xml_data = """
            <video edx_video_id="{edx_video_id}">
                <video_asset mock_attr=""/>
            </video>
        """.format(
            edx_video_id=edx_video_id
        )
        id_generator = Mock()
        id_generator.target_course_id = 'test_course_id'
        video = VideoBlock.from_xml(xml_data, module_system, id_generator)

        self.assert_attributes_equal(video, {'edx_video_id': edx_video_id})
        mock_val_api.import_from_xml.assert_called_once_with(
            ANY,
            edx_video_id,
            module_system.resources_fs,
            EXPORT_IMPORT_STATIC_DIR,
            {u'en': [u'subs_3_yD_cEKoCk.srt.sjson']},
            course_id='test_course_id'
        )
Ejemplo n.º 7
0
    def test_from_xml_when_handout_is_course_asset(self, course_id_string, expected_handout_link):
        """
        Test that if handout link is course_asset then it will contain targeted course_id in handout link.
        """
        module_system = DummySystem(load_error_modules=True)
        course_id = CourseKey.from_string(course_id_string)
        xml_data = '''
            <video display_name="Test Video"
                   youtube="1.0:p2Q6BrNhdh8,0.75:izygArpw-Qo,1.25:1EeWXzPdhSA,1.5:rABDYkeK0x8"
                   show_captions="false"
                   download_track="false"
                   start_time="00:00:01"
                   download_video="false"
                   end_time="00:01:00">
              <source src="http://www.example.com/source.mp4"/>
              <track src="http://www.example.com/track"/>
              <handout src="/asset-v1:test_org_1+test_course_1+test_run_1+type@[email protected]"/>
              <transcript language="uk" src="ukrainian_translation.srt" />
              <transcript language="de" src="german_translation.srt" />
            </video>
        '''
        id_generator = Mock()
        id_generator.target_course_id = course_id

        output = VideoBlock.from_xml(xml_data, module_system, id_generator)
        self.assert_attributes_equal(output, {
            'youtube_id_0_75': 'izygArpw-Qo',
            'youtube_id_1_0': 'p2Q6BrNhdh8',
            'youtube_id_1_25': '1EeWXzPdhSA',
            'youtube_id_1_5': 'rABDYkeK0x8',
            'show_captions': False,
            'start_time': datetime.timedelta(seconds=1),
            'end_time': datetime.timedelta(seconds=60),
            'track': 'http://www.example.com/track',
            'handout': expected_handout_link,
            'download_track': False,
            'download_video': False,
            'html5_sources': ['http://www.example.com/source.mp4'],
            'data': '',
            'transcripts': {'uk': 'ukrainian_translation.srt', 'de': 'german_translation.srt'},
        })
Ejemplo n.º 8
0
 def test_from_xml_double_quote_concatenated_youtube(self):
     module_system = DummySystem(load_error_modules=True)
     xml_data = '''
         <video display_name="Test Video"
                youtube="1.0:&quot;p2Q6BrNhdh8&quot;,1.25:&quot;1EeWXzPdhSA&quot;">
         </video>
     '''
     output = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(output, {
         'youtube_id_0_75': '',
         'youtube_id_1_0': 'p2Q6BrNhdh8',
         'youtube_id_1_25': '1EeWXzPdhSA',
         'youtube_id_1_5': '',
         'show_captions': True,
         'start_time': datetime.timedelta(seconds=0.0),
         'end_time': datetime.timedelta(seconds=0.0),
         'track': '',
         'handout': None,
         'download_track': False,
         'download_video': False,
         'html5_sources': [],
         'data': ''
     })
Ejemplo n.º 9
0
 def test_from_xml_no_attributes(self):
     """
     Make sure settings are correct if none are explicitly set in XML.
     """
     module_system = DummySystem(load_error_modules=True)
     xml_data = '<video></video>'
     output = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(output, {
         'youtube_id_0_75': '',
         'youtube_id_1_0': '3_yD_cEKoCk',
         'youtube_id_1_25': '',
         'youtube_id_1_5': '',
         'show_captions': True,
         'start_time': datetime.timedelta(seconds=0.0),
         'end_time': datetime.timedelta(seconds=0.0),
         'track': '',
         'handout': None,
         'download_track': False,
         'download_video': False,
         'html5_sources': [],
         'data': '',
         'transcripts': {},
     })
Ejemplo n.º 10
0
 def test_from_xml_double_quotes(self):
     """
     Make sure we can handle the double-quoted string format (which was used for exporting for
     a few weeks).
     """
     module_system = DummySystem(load_error_modules=True)
     xml_data = '''
         <video display_name="&quot;display_name&quot;"
             html5_sources="[&quot;source_1&quot;, &quot;source_2&quot;]"
             show_captions="false"
             download_video="true"
             sub="&quot;html5_subtitles&quot;"
             track="&quot;http://www.example.com/track&quot;"
             handout="&quot;http://www.example.com/handout&quot;"
             download_track="true"
             youtube_id_0_75="&quot;OEoXaMPEzf65&quot;"
             youtube_id_1_25="&quot;OEoXaMPEzf125&quot;"
             youtube_id_1_5="&quot;OEoXaMPEzf15&quot;"
             youtube_id_1_0="&quot;OEoXaMPEzf10&quot;"
             />
     '''
     output = VideoBlock.from_xml(xml_data, module_system, Mock())
     self.assert_attributes_equal(output, {
         'youtube_id_0_75': 'OEoXaMPEzf65',
         'youtube_id_1_0': 'OEoXaMPEzf10',
         'youtube_id_1_25': 'OEoXaMPEzf125',
         'youtube_id_1_5': 'OEoXaMPEzf15',
         'show_captions': False,
         'start_time': datetime.timedelta(seconds=0.0),
         'end_time': datetime.timedelta(seconds=0.0),
         'track': 'http://www.example.com/track',
         'handout': 'http://www.example.com/handout',
         'download_track': True,
         'download_video': True,
         'html5_sources': ["source_1", "source_2"],
         'data': ''
     })