Merge pull request #21948 from edx/awais786/BOM-861

BOM-861
This commit is contained in:
Awais Qureshi
2019-10-08 17:36:53 +05:00
committed by GitHub
2 changed files with 48 additions and 36 deletions

View File

@@ -3,7 +3,9 @@ Helpers for courseware tests.
"""
from __future__ import absolute_import
import ast
import json
from collections import OrderedDict
from datetime import timedelta
import six
@@ -17,10 +19,10 @@ from six import text_type
from six.moves import range
from xblock.field_data import DictFieldData
from lms.djangoapps.courseware.access import has_access
from lms.djangoapps.courseware.masquerade import handle_ajax, setup_masquerade
from edxmako.shortcuts import render_to_string
from lms.djangoapps.courseware.access import has_access
from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link
from lms.djangoapps.courseware.masquerade import handle_ajax, setup_masquerade
from lms.djangoapps.lms_xblock.field_data import LmsFieldData
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.core.lib.url_utils import quote_slashes
@@ -404,3 +406,15 @@ def get_expiration_banner_text(user, course, language='en'):
expiration_date=formatted_expiration_date
)
return bannerText
def get_context_dict_from_string(data):
"""
Retrieve dictionary from string.
"""
# Replace tuple and un-necessary info from inside string and get the dictionary.
cleaned_data = ast.literal_eval(data.split('((\'video.html\',')[1].replace("),\n {})", '').strip()) # pylint: disable=unicode-format-string
cleaned_data['metadata'] = OrderedDict(
sorted(json.loads(cleaned_data['metadata']).items(), key=lambda t: t[0])
)
return cleaned_data

View File

@@ -5,7 +5,6 @@ Video xmodule tests in mongo.
from __future__ import absolute_import
import ast
import io
import json
import shutil
@@ -39,6 +38,7 @@ from mock import MagicMock, Mock, patch
from path import Path as path
from waffle.testutils import override_flag
from lms.djangoapps.courseware.tests.helpers import get_context_dict_from_string
from openedx.core.djangoapps.video_pipeline.config.waffle import DEPRECATE_YOUTUBE, waffle_flags
from openedx.core.djangoapps.waffle_utils.models import WaffleFlagCourseOverrideModel
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase
@@ -134,8 +134,10 @@ class TestVideoYouTube(TestVideo): # pylint: disable=test-inherits-tests
}
self.assertEqual(
context,
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context),
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -214,10 +216,15 @@ class TestVideoNonYouTube(TestVideo): # pylint: disable=test-inherits-tests
'poster': 'null',
}
self.assertEqual(
context,
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context),
expected_result = get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
self.assertEqual(
get_context_dict_from_string(context),
expected_result
)
self.assertEqual(expected_result['download_video_link'], 'example.mp4')
self.assertEqual(expected_result['display_name'], 'A Name')
@ddt.ddt
@@ -383,8 +390,8 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
})
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -493,8 +500,8 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
})
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -634,23 +641,12 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
})
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
def get_context_dict_from_string(self, data):
"""
Retrieve dictionary from string.
"""
# Replace tuple and un-necessary info from inside string and get the dictionary.
cleaned_data = ast.literal_eval(data.split('((\'video.html\',')[1].replace("),\n {})", '').strip()) # pylint: disable=unicode-format-string
cleaned_data['metadata'] = OrderedDict(
sorted(json.loads(cleaned_data['metadata']).items(), key=lambda t: t[0])
)
return cleaned_data
def test_get_html_with_existing_edx_video_id(self):
"""
Tests the `VideoBlock` `get_html` where `edx_video_id` is given and related video is found
@@ -676,8 +672,8 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
# expected_context, a dict to assert with context
context, expected_context = self.helper_get_html_with_edx_video_id(data)
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -710,8 +706,8 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
context, expected_context = self.helper_get_html_with_edx_video_id(data)
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -921,8 +917,8 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
})
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -1026,8 +1022,8 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
})
self.assertEqual(
self.get_context_dict_from_string(context),
self.get_context_dict_from_string(
get_context_dict_from_string(context),
get_context_dict_from_string(
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
)
@@ -1083,7 +1079,7 @@ class TestGetHtmlMethod(BaseTestVideoXBlock):
self.assertIn('"streams": "1.00:https://yt.com/?v=v0TFmdO4ZP0"', context)
self.assertEqual(
sorted(["https://webm.com/dw.webm", "https://mp4.com/dm.mp4", "https://hls.com/hls.m3u8"]),
sorted(self.get_context_dict_from_string(context)['metadata']['sources'])
sorted(get_context_dict_from_string(context)['metadata']['sources'])
)
def test_get_html_hls_no_video_id(self):
@@ -2266,7 +2262,9 @@ class TestVideoWithBumper(TestVideo): # pylint: disable=test-inherits-tests
}
expected_content = self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
self.assertEqual(content, expected_content)
self.assertEqual(
get_context_dict_from_string(content), get_context_dict_from_string(expected_content)
)
@ddt.ddt
@@ -2358,7 +2356,7 @@ class TestAutoAdvanceVideo(TestVideo):
with override_settings(FEATURES=self.FEATURES):
expected_content = self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
self.assertEqual(content, expected_content)
self.assertEqual(get_context_dict_from_string(content), get_context_dict_from_string(expected_content))
def change_course_setting_autoadvance(self, new_value):
"""