diff --git a/cms/djangoapps/contentstore/tests/factories.py b/cms/djangoapps/contentstore/tests/factories.py index 624b792096..3274477098 100644 --- a/cms/djangoapps/contentstore/tests/factories.py +++ b/cms/djangoapps/contentstore/tests/factories.py @@ -6,12 +6,19 @@ from uuid import uuid4 from xmodule.timeparse import stringify_time +def XMODULE_COURSE_CREATION(class_to_create, **kwargs): + return XModuleCourseFactory._create(class_to_create, **kwargs) + +def XMODULE_ITEM_CREATION(class_to_create, **kwargs): + return XModuleItemFactory._create(class_to_create, **kwargs) + class XModuleCourseFactory(Factory): """ Factory for XModule courses. """ ABSTRACT_FACTORY = True + _creation_function = (XMODULE_COURSE_CREATION,) @classmethod def _create(cls, target_class, *args, **kwargs): @@ -62,6 +69,7 @@ class XModuleItemFactory(Factory): """ ABSTRACT_FACTORY = True + _creation_function = (XMODULE_ITEM_CREATION,) @classmethod def _create(cls, target_class, *args, **kwargs): @@ -74,6 +82,7 @@ class XModuleItemFactory(Factory): store = modulestore('direct') + # This code was based off that in cms/djangoapps/contentstore/views.py parent = store.get_item(parent_location) dest_location = parent_location._replace(category=template.category, name=uuid4().hex) diff --git a/cms/djangoapps/contentstore/tests/tests.py b/cms/djangoapps/contentstore/tests/tests.py index 72909cbdf1..9ddbe049ad 100644 --- a/cms/djangoapps/contentstore/tests/tests.py +++ b/cms/djangoapps/contentstore/tests/tests.py @@ -14,6 +14,7 @@ import xmodule.modulestore.django from xmodule.modulestore import Location from xmodule.modulestore.xml_importer import import_from_xml import copy +from factories import * def parse_json(response): @@ -220,12 +221,6 @@ class ContentStoreTest(TestCase): 'display_name': 'Robot Super Course', } - self.section_data = { - 'parent_location' : 'i4x://MITx/999/course/Robot_Super_Course', - 'template' : 'i4x://edx/templates/chapter/Empty', - 'display_name': 'Section One', - } - def tearDown(self): # Make sure you flush out the test modulestore after the end # of the last test because otherwise on the next run @@ -271,20 +266,27 @@ class ContentStoreTest(TestCase): status_code=200, html=True) + def test_course_factory(self): + course = CourseFactory.create() + self.assertIsInstance(course, xmodule.course_module.CourseDescriptor) + + def test_item_factory(self): + course = CourseFactory.create() + item = ItemFactory.create(parent_location=course.location) + self.assertIsInstance(item, xmodule.seq_module.SequenceDescriptor) + def test_course_index_view_with_course(self): """Test viewing the index page with an existing course""" - # Create a course so there is something to view - resp = self.client.post(reverse('create_new_course'), self.course_data) + CourseFactory.create(display_name='Robot Super Educational Course') resp = self.client.get(reverse('index')) self.assertContains(resp, - 'Robot Super Course', + 'Robot Super Educational Course', status_code=200, html=True) def test_course_overview_view_with_course(self): """Test viewing the course overview page with an existing course""" - # Create a course so there is something to view - resp = self.client.post(reverse('create_new_course'), self.course_data) + CourseFactory.create(org='MITx', course='999', display_name='Robot Super Course') data = { 'org': 'MITx', @@ -300,8 +302,15 @@ class ContentStoreTest(TestCase): def test_clone_item(self): """Test cloning an item. E.g. creating a new section""" - resp = self.client.post(reverse('create_new_course'), self.course_data) - resp = self.client.post(reverse('clone_item'), self.section_data) + CourseFactory.create(org='MITx', course='999', display_name='Robot Super Course') + + section_data = { + 'parent_location' : 'i4x://MITx/999/course/Robot_Super_Course', + 'template' : 'i4x://edx/templates/chapter/Empty', + 'display_name': 'Section One', + } + + resp = self.client.post(reverse('clone_item'), section_data) self.assertEqual(resp.status_code, 200) data = parse_json(resp) @@ -323,16 +332,4 @@ class ContentStoreTest(TestCase): def test_edit_unit_full(self): self.check_edit_unit('full') - def test_factory(self): - from factories import * - - course = CourseFactory.create() - print '\n' - print course - print '\n' - section = ItemFactory.create() - - print '\n' - print section - print '\n' diff --git a/test-requirements.txt b/test-requirements.txt index c9c15b340d..7048faad38 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,3 +3,4 @@ coverage nosexcover pylint pep8 +factory_boy