Commit 193bce30 by muhammad-ammar

fix

parent 3f5f8a0c
...@@ -417,7 +417,7 @@ class VideoStudioViewHandlers(object): ...@@ -417,7 +417,7 @@ class VideoStudioViewHandlers(object):
for video_id in video_ids: for video_id in video_ids:
edxval_api.create_or_update_video_transcript( edxval_api.create_or_update_video_transcript(
video_id=video_id, video_id=video_id,
language_code='en', language_code=language,
file_name='subs.sjson', # S3 filename will be `uuid.sjson` like 5d30d3e44ceb163976388cae.sjson file_name='subs.sjson', # S3 filename will be `uuid.sjson` like 5d30d3e44ceb163976388cae.sjson
file_format='sjson', file_format='sjson',
provider='Custom', provider='Custom',
......
...@@ -9,18 +9,22 @@ from datetime import datetime, timedelta ...@@ -9,18 +9,22 @@ from datetime import datetime, timedelta
import ddt import ddt
import freezegun import freezegun
from common.test.utils import normalize_repr
from mock import MagicMock, Mock, patch from mock import MagicMock, Mock, patch
from nose.plugins.attrib import attr from nose.plugins.attrib import attr
from webob import Request, Response
from common.test.utils import normalize_repr
from openedx.core.djangoapps.contentserver.caching import del_cached_content from openedx.core.djangoapps.contentserver.caching import del_cached_content
from webob import Request, Response
from xmodule.contentstore.content import StaticContent from xmodule.contentstore.content import StaticContent
from xmodule.contentstore.django import contentstore from xmodule.contentstore.django import contentstore
from xmodule.exceptions import NotFoundError from xmodule.exceptions import NotFoundError
from xmodule.modulestore import ModuleStoreEnum from xmodule.modulestore import ModuleStoreEnum
from xmodule.modulestore.django import modulestore from xmodule.modulestore.django import modulestore
from xmodule.video_module.transcripts_utils import TranscriptException, TranscriptsGenerationException from xmodule.video_module.transcripts_utils import (
Transcript,
TranscriptException,
TranscriptsGenerationException,
get_video_transcript_content
)
from xmodule.x_module import STUDENT_VIEW from xmodule.x_module import STUDENT_VIEW
from .helpers import BaseTestXmodule from .helpers import BaseTestXmodule
...@@ -30,7 +34,7 @@ TRANSCRIPT = {"start": [10], "end": [100], "text": ["Hi, welcome to Edx."]} ...@@ -30,7 +34,7 @@ TRANSCRIPT = {"start": [10], "end": [100], "text": ["Hi, welcome to Edx."]}
BUMPER_TRANSCRIPT = {"start": [1], "end": [10], "text": ["A bumper"]} BUMPER_TRANSCRIPT = {"start": [1], "end": [10], "text": ["A bumper"]}
SRT_content = textwrap.dedent(""" SRT_content = textwrap.dedent("""
0 0
00:00:00,12 --> 00:00:00,100 00:00:00,012 --> 00:00:00,100
Привіт, edX вітає вас. Привіт, edX вітає вас.
""") """)
...@@ -897,16 +901,43 @@ class TestStudioTranscriptTranslationPostDispatch(TestVideo): ...@@ -897,16 +901,43 @@ class TestStudioTranscriptTranslationPostDispatch(TestVideo):
METADATA = {} METADATA = {}
def assert_transcript_upload(self, item, subs_id, language, expected_transcript_content):
"""
Verify that transcript is uploaded as expected.
Arguments:
item (descriptor): Video descriptor
subs_id (str): subtitle id
language (str): transcript language
expected_transcript_content (str): transcript content be checked
"""
# verify that transcript should not be in contentstore
content_location = StaticContent.compute_location(self.course.id, subs_id)
with self.assertRaises(NotFoundError):
contentstore().find(content_location)
# verify uploaded transcript content
transcript_data = get_video_transcript_content(
language_code=language,
edx_video_id=item.edx_video_id,
youtube_id_1_0=item.youtube_id_1_0,
html5_sources=item.html5_sources,
)
uploaded_transcript_content = Transcript.convert(
transcript_data['content'],
input_format='sjson',
output_format='srt'
)
self.assertIn(expected_transcript_content.decode('utf-8').strip(), uploaded_transcript_content.strip())
def test_studio_transcript_post(self): def test_studio_transcript_post(self):
# Check for exceptons: # Check for exceptons:
# Language is passed, bad content or filename: # Language is passed, bad content or filename:
# should be first, as other tests save transcrips to store. # should be first, as other tests save transcrips to store.
request = Request.blank('/translation/uk', POST={'file': ('filename.srt', SRT_content)})
with patch('xmodule.video_module.video_handlers.save_to_store'):
with self.assertRaises(TranscriptException): # transcripts were not saved to store for some reason.
response = self.item_descriptor.studio_transcript(request=request, dispatch='translation/uk')
request = Request.blank('/translation/uk', POST={'file': ('filename', 'content')}) request = Request.blank('/translation/uk', POST={'file': ('filename', 'content')})
with self.assertRaises(TranscriptsGenerationException): # Not an srt filename with self.assertRaises(TranscriptsGenerationException): # Not an srt filename
self.item_descriptor.studio_transcript(request=request, dispatch='translation/uk') self.item_descriptor.studio_transcript(request=request, dispatch='translation/uk')
...@@ -932,7 +963,13 @@ class TestStudioTranscriptTranslationPostDispatch(TestVideo): ...@@ -932,7 +963,13 @@ class TestStudioTranscriptTranslationPostDispatch(TestVideo):
self.assertEqual(response.status, '201 Created') self.assertEqual(response.status, '201 Created')
self.assertDictEqual(json.loads(response.body), {'filename': u'filename.srt', 'status': 'Success'}) self.assertDictEqual(json.loads(response.body), {'filename': u'filename.srt', 'status': 'Success'})
self.assertDictEqual(self.item_descriptor.transcripts, {}) self.assertDictEqual(self.item_descriptor.transcripts, {})
self.assertTrue(_check_asset(self.item_descriptor.location, u'filename.srt'))
self.assert_transcript_upload(
self.item_descriptor,
'filename.srt',
'uk',
SRT_content,
)
@attr(shard=1) @attr(shard=1)
...@@ -1091,7 +1128,7 @@ class TestGetTranscript(TestVideo): ...@@ -1091,7 +1128,7 @@ class TestGetTranscript(TestVideo):
text, filename, mime_type = self.item.get_transcript(transcripts) text, filename, mime_type = self.item.get_transcript(transcripts)
expected_text = textwrap.dedent(""" expected_text = textwrap.dedent("""
0 0
00:00:00,12 --> 00:00:00,100 00:00:00,012 --> 00:00:00,100
Привіт, edX вітає вас. Привіт, edX вітає вас.
""") """)
self.assertEqual(text, expected_text) self.assertEqual(text, expected_text)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment