fix: move service initialization from LMS runtime init to module render
This commit is contained in:
@@ -50,19 +50,6 @@ class TestModuleSystem(ModuleSystem): # pylint: disable=abstract-method
|
||||
"""
|
||||
ModuleSystem for testing
|
||||
"""
|
||||
def __init__(self, **kwargs):
|
||||
course_id = kwargs['course_id']
|
||||
id_manager = CourseLocationManager(course_id)
|
||||
kwargs.setdefault('id_reader', id_manager)
|
||||
kwargs.setdefault('id_generator', id_manager)
|
||||
|
||||
services = kwargs.get('services', {})
|
||||
services.setdefault('cache', CacheService(DoNothingCache()))
|
||||
services.setdefault('field-data', DictFieldData({}))
|
||||
services.setdefault('sandbox', SandboxService(contentstore, course_id))
|
||||
kwargs['services'] = services
|
||||
super().__init__(**kwargs)
|
||||
|
||||
def handler_url(self, block, handler, suffix='', query='', thirdparty=False): # lint-amnesty, pylint: disable=arguments-differ
|
||||
return '{usage_id}/{handler}{suffix}?{query}'.format(
|
||||
usage_id=str(block.scope_ids.usage_id),
|
||||
@@ -132,6 +119,8 @@ def get_test_system(
|
||||
|
||||
descriptor_system = get_test_descriptor_system()
|
||||
|
||||
id_manager = CourseLocationManager(course_id)
|
||||
|
||||
def get_module(descriptor):
|
||||
"""Mocks module_system get_module function"""
|
||||
|
||||
@@ -162,10 +151,14 @@ def get_test_system(
|
||||
waittime=10,
|
||||
construct_callback=Mock(name='get_test_system.xqueue.construct_callback', side_effect="/"),
|
||||
),
|
||||
'replace_urls': replace_url_service
|
||||
'replace_urls': replace_url_service,
|
||||
'cache': CacheService(DoNothingCache()),
|
||||
'field-data': DictFieldData({}),
|
||||
'sandbox': SandboxService(contentstore, course_id),
|
||||
},
|
||||
course_id=course_id,
|
||||
descriptor_runtime=descriptor_system,
|
||||
id_reader=id_manager,
|
||||
id_generator=id_manager,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import pytest
|
||||
from django.conf import settings
|
||||
from django.test import TestCase, override_settings
|
||||
from lxml import etree
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from opaque_keys.edx.locator import BlockUsageLocator
|
||||
from pytz import UTC
|
||||
from webob.request import Request
|
||||
@@ -61,14 +62,15 @@ class LTIBlockTest(TestCase):
|
||||
</imsx_POXBody>
|
||||
</imsx_POXEnvelopeRequest>
|
||||
""")
|
||||
self.system = get_test_system()
|
||||
self.course_id = CourseKey.from_string('org/course/run')
|
||||
self.system = get_test_system(self.course_id)
|
||||
self.system.publish = Mock()
|
||||
self.system._services['rebind_user'] = Mock() # pylint: disable=protected-access
|
||||
|
||||
self.xmodule = LTIBlock(
|
||||
self.system,
|
||||
DictFieldData({}),
|
||||
ScopeIds(None, None, None, BlockUsageLocator(self.system.course_id, 'lti', 'name'))
|
||||
ScopeIds(None, None, None, BlockUsageLocator(self.course_id, 'lti', 'name'))
|
||||
)
|
||||
current_user = self.system.service(self.xmodule, 'user').get_current_user()
|
||||
self.user_id = current_user.opt_attrs.get(ATTR_KEY_ANONYMOUS_USER_ID)
|
||||
@@ -319,7 +321,7 @@ class LTIBlockTest(TestCase):
|
||||
|
||||
def test_lis_result_sourcedid(self):
|
||||
expected_sourced_id = ':'.join(parse.quote(i) for i in (
|
||||
str(self.system.course_id),
|
||||
str(self.course_id),
|
||||
self.xmodule.get_resource_link_id(),
|
||||
self.user_id
|
||||
))
|
||||
@@ -539,4 +541,4 @@ class LTIBlockTest(TestCase):
|
||||
"""
|
||||
Tests that LTI parameter context_id is equal to course_id.
|
||||
"""
|
||||
assert str(self.system.course_id) == self.xmodule.context_id
|
||||
assert str(self.course_id) == self.xmodule.context_id
|
||||
|
||||
@@ -5,6 +5,7 @@ import unittest
|
||||
|
||||
from unittest.mock import Mock
|
||||
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from xblock.field_data import DictFieldData
|
||||
from xblock.fields import ScopeIds
|
||||
from xmodule.poll_module import PollBlock
|
||||
@@ -24,8 +25,9 @@ class PollBlockTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.system = get_test_system()
|
||||
usage_key = self.system.course_id.make_usage_key(PollBlock.category, 'test_loc')
|
||||
course_key = CourseKey.from_string('org/course/run')
|
||||
self.system = get_test_system(course_key)
|
||||
usage_key = course_key.make_usage_key(PollBlock.category, 'test_loc')
|
||||
# ScopeIds has 4 fields: user_id, block_type, def_id, usage_id
|
||||
scope_ids = ScopeIds(1, PollBlock.category, usage_key, usage_key)
|
||||
self.xmodule = PollBlock(
|
||||
|
||||
Reference in New Issue
Block a user