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