diff --git a/cms/djangoapps/contentstore/tests/factories.py b/cms/djangoapps/contentstore/tests/factories.py index 3274477..cb9f451 100644 --- a/cms/djangoapps/contentstore/tests/factories.py +++ b/cms/djangoapps/contentstore/tests/factories.py @@ -73,6 +73,10 @@ class XModuleItemFactory(Factory): @classmethod def _create(cls, target_class, *args, **kwargs): + """ + kwargs must include parent_location, template. Can contain display_name + target_class is ignored + """ DETACHED_CATEGORIES = ['about', 'static_tab', 'course_info'] diff --git a/cms/djangoapps/contentstore/tests/tests.py b/cms/djangoapps/contentstore/tests/tests.py index b3f13de..a8bf5e8 100644 --- a/cms/djangoapps/contentstore/tests/tests.py +++ b/cms/djangoapps/contentstore/tests/tests.py @@ -22,6 +22,8 @@ from xmodule.modulestore.django import modulestore from xmodule.contentstore.django import contentstore from xmodule.course_module import CourseDescriptor from xmodule.modulestore.xml_exporter import export_to_xml +from cms.djangoapps.contentstore.utils import get_modulestore +from xmodule.capa_module import CapaDescriptor def parse_json(response): """Parse response, which is assumed to be json""" @@ -438,13 +440,23 @@ class ContentStoreTest(TestCase): self.assertContains(resp, '/c4x/edX/full/asset/handouts_schematic_tutorial.pdf') + def test_capa_module(self): + """Test that a problem w/ markdown has markdown and uses the right html etc""" + CourseFactory.create(org='MITx', course='999', display_name='Robot Super Course') + problem_data = { + 'parent_location' : 'i4x://MITx/999/course/Robot_Super_Course', + 'template' : 'i4x://edx/templates/problem/Empty' + } + resp = self.client.post(reverse('clone_item'), problem_data) - - - - - - - + self.assertEqual(resp.status_code, 200) + payload = parse_json(resp) + problem_loc = payload['id'] + problem = get_modulestore(problem_loc).get_item(problem_loc) + # should be a CapaDescriptor + self.assertIsInstance(problem, CapaDescriptor, "New problem is not a CapaDescriptor") + context = problem.get_context() + self.assertIn('markdown', context, "markdown is missing") + self.assertNotIn('markdown', problem.editable_metadata_fields, "Markdown slipped into the editable metadata fields") \ No newline at end of file