@@ -2002,6 +2002,29 @@ def runtime_service_side_effect(_block, service_name):
20022002 response = self .xblock .studio_view ({})
20032003 self .assertEqual (response .js_init_fn , 'LtiConsumerXBlockInitStudio' )
20042004
2005+ def test_studio_view_without_course (self ):
2006+ """
2007+ Test that the studio view is reder correctly when there is no course (e.g. in a library).
2008+ """
2009+ # Mock runtime services used by studio view
2010+ mock_i18n_service = gettext .NullTranslations ()
2011+ mock_i18n_service .ugettext = mock_i18n_service .gettext
2012+
2013+ mock_config_service = Mock ()
2014+ mock_config_service .configuration .lti_access_to_learners_editable .return_value = False
2015+
2016+ def runtime_service_side_effect (_block , service_name ):
2017+ if service_name == 'i18n' :
2018+ return mock_i18n_service
2019+ if service_name == 'configuration' :
2020+ return mock_config_service
2021+ return None # pragma: no cover
2022+
2023+ self .xblock .runtime .service .side_effect = runtime_service_side_effect
2024+
2025+ response = self .xblock .studio_view ({})
2026+ self .assertEqual (response .status_code , 200 )
2027+
20052028 @patch ('lti_consumer.lti_xblock.LtiConsumerXBlock.get_lti_1p3_launch_data' )
20062029 @patch ('lti_consumer.api.get_lti_1p3_launch_info' )
20072030 def test_author_view (self , mock_get_launch_info , mock_lti_get_1p3_launch_data ):
0 commit comments