""" Utilities for view tests. """ import json from cms.djangoapps.contentstore.tests.utils import CourseTestCase from xmodule.modulestore.tests.factories import BlockFactory # lint-amnesty, pylint: disable=wrong-import-order from ...helpers import xblock_studio_url class StudioPageTestCase(CourseTestCase): """ Base class for all tests of Studio pages. """ def setUp(self): super().setUp() self.chapter = BlockFactory.create(parent=self.course, category='chapter', display_name="Week 1") self.sequential = BlockFactory.create(parent=self.chapter, category='sequential', display_name="Lesson 1") def get_page_html(self, xblock): """ Returns the HTML for the page representing the xblock. """ url = xblock_studio_url(xblock) self.assertIsNotNone(url) resp = self.client.get_html(url) self.assertEqual(resp.status_code, 200) return resp.content.decode(resp.charset) def get_preview_html(self, xblock, view_name): """ Returns the HTML for the xblock when shown within a unit or container page. """ preview_url = f'/xblock/{xblock.location}/{view_name}' resp = self.client.get_json(preview_url) self.assertEqual(resp.status_code, 200) resp_content = json.loads(resp.content.decode('utf-8')) return resp_content['html'] def validate_preview_html(self, xblock, view_name, in_unit=False, can_add=True, can_reorder=True, can_move=True, can_edit=True, can_duplicate=True, can_delete=True): """ Verify that the specified xblock's preview has the expected HTML elements. """ html = self.get_preview_html(xblock, view_name) self.validate_html_for_action_button( html, '
', can_add ) self.validate_html_for_action_button( html, '', can_reorder ) if in_unit: move_action_html = '