From ca1f76cedb030dac503aa7a2d5ccd8dcaf187cfd Mon Sep 17 00:00:00 2001 From: David Ormsbee Date: Fri, 24 Feb 2017 14:48:07 -0500 Subject: [PATCH] Move more tests to use bulk_operations. --- lms/djangoapps/courseware/tests/test_views.py | 147 ++++++----- lms/djangoapps/grades/tests/test_grades.py | 235 +++++++++--------- 2 files changed, 197 insertions(+), 185 deletions(-) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index e2d0d60804..bc2e358fc2 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -242,44 +242,45 @@ class ViewsTestCase(ModuleStoreTestCase): def setUp(self): super(ViewsTestCase, self).setUp() self.course = CourseFactory.create(display_name=u'teꜱᴛ course', run="Testing_course") - self.chapter = ItemFactory.create( - category='chapter', - parent_location=self.course.location, - display_name="Chapter 1", - ) - self.section = ItemFactory.create( - category='sequential', - parent_location=self.chapter.location, - due=datetime(2013, 9, 18, 11, 30, 00), - display_name='Sequential 1', - format='Homework' - ) - self.vertical = ItemFactory.create( - category='vertical', - parent_location=self.section.location, - display_name='Vertical 1', - ) - self.problem = ItemFactory.create( - category='problem', - parent_location=self.vertical.location, - display_name='Problem 1', - ) + with self.store.bulk_operations(self.course.id): + self.chapter = ItemFactory.create( + category='chapter', + parent_location=self.course.location, + display_name="Chapter 1", + ) + self.section = ItemFactory.create( + category='sequential', + parent_location=self.chapter.location, + due=datetime(2013, 9, 18, 11, 30, 00), + display_name='Sequential 1', + format='Homework' + ) + self.vertical = ItemFactory.create( + category='vertical', + parent_location=self.section.location, + display_name='Vertical 1', + ) + self.problem = ItemFactory.create( + category='problem', + parent_location=self.vertical.location, + display_name='Problem 1', + ) - self.section2 = ItemFactory.create( - category='sequential', - parent_location=self.chapter.location, - display_name='Sequential 2', - ) - self.vertical2 = ItemFactory.create( - category='vertical', - parent_location=self.section2.location, - display_name='Vertical 2', - ) - self.problem2 = ItemFactory.create( - category='problem', - parent_location=self.vertical2.location, - display_name='Problem 2', - ) + self.section2 = ItemFactory.create( + category='sequential', + parent_location=self.chapter.location, + display_name='Sequential 2', + ) + self.vertical2 = ItemFactory.create( + category='vertical', + parent_location=self.section2.location, + display_name='Vertical 2', + ) + self.problem2 = ItemFactory.create( + category='problem', + parent_location=self.vertical2.location, + display_name='Problem 2', + ) self.course_key = self.course.id self.password = '123456' @@ -989,15 +990,16 @@ class BaseDueDateTests(ModuleStoreTestCase): :param course_kwargs: All kwargs are passed to through to the :class:`CourseFactory` """ course = CourseFactory.create(**course_kwargs) - chapter = ItemFactory.create(category='chapter', parent_location=course.location) - section = ItemFactory.create( - category='sequential', - parent_location=chapter.location, - due=datetime(2013, 9, 18, 11, 30, 00), - format='homework' - ) - vertical = ItemFactory.create(category='vertical', parent_location=section.location) - ItemFactory.create(category='problem', parent_location=vertical.location) + with self.store.bulk_operations(course.id): + chapter = ItemFactory.create(category='chapter', parent_location=course.location) + section = ItemFactory.create( + category='sequential', + parent_location=chapter.location, + due=datetime(2013, 9, 18, 11, 30, 00), + format='homework' + ) + vertical = ItemFactory.create(category='vertical', parent_location=section.location) + ItemFactory.create(category='problem', parent_location=vertical.location) course = modulestore().get_course(course.id) self.assertIsNotNone(course.get_children()[0].get_children()[0].due) @@ -1149,19 +1151,18 @@ class ProgressPageTests(ModuleStoreTestCase): def setup_course(self, **options): """Create the test course.""" - course = CourseFactory.create( + self.course = CourseFactory.create( start=datetime(2013, 9, 16, 7, 17, 28), grade_cutoffs={u'çü†øƒƒ': 0.75, 'Pass': 0.5}, **options ) + with self.store.bulk_operations(self.course.id): + self.chapter = ItemFactory.create(category='chapter', parent_location=self.course.location) + self.section = ItemFactory.create(category='sequential', parent_location=self.chapter.location) + self.vertical = ItemFactory.create(category='vertical', parent_location=self.section.location) - self.course = modulestore().get_course(course.id) CourseEnrollmentFactory(user=self.user, course_id=self.course.id, mode=CourseMode.HONOR) - self.chapter = ItemFactory.create(category='chapter', parent_location=self.course.location) - self.section = ItemFactory.create(category='sequential', parent_location=self.chapter.location) - self.vertical = ItemFactory.create(category='vertical', parent_location=self.section.location) - def _get_progress_page(self, expected_status_code=200): """ Gets the progress page for the user in the course. @@ -1898,10 +1899,11 @@ class TestIndexView(ModuleStoreTestCase): user = UserFactory() course = CourseFactory.create() - chapter = ItemFactory.create(parent=course, category='chapter') - section = ItemFactory.create(parent=chapter, category='sequential', display_name="Sequence") - vertical = ItemFactory.create(parent=section, category='vertical', display_name="Vertical") - ItemFactory.create(parent=vertical, category='id_checker', display_name="ID Checker") + with self.store.bulk_operations(course.id): + chapter = ItemFactory.create(parent=course, category='chapter') + section = ItemFactory.create(parent=chapter, category='sequential', display_name="Sequence") + vertical = ItemFactory.create(parent=section, category='vertical', display_name="Vertical") + ItemFactory.create(parent=vertical, category='id_checker', display_name="ID Checker") CourseEnrollmentFactory(user=user, course_id=course.id) @@ -1936,11 +1938,12 @@ class TestIndexViewWithVerticalPositions(ModuleStoreTestCase): # create course with 3 positions self.course = CourseFactory.create() - self.chapter = ItemFactory.create(parent=self.course, category='chapter') - self.section = ItemFactory.create(parent=self.chapter, category='sequential', display_name="Sequence") - ItemFactory.create(parent=self.section, category='vertical', display_name="Vertical1") - ItemFactory.create(parent=self.section, category='vertical', display_name="Vertical2") - ItemFactory.create(parent=self.section, category='vertical', display_name="Vertical3") + with self.store.bulk_operations(self.course.id): + self.chapter = ItemFactory.create(parent=self.course, category='chapter') + self.section = ItemFactory.create(parent=self.chapter, category='sequential', display_name="Sequence") + ItemFactory.create(parent=self.section, category='vertical', display_name="Vertical1") + ItemFactory.create(parent=self.section, category='vertical', display_name="Vertical2") + ItemFactory.create(parent=self.section, category='vertical', display_name="Vertical3") self.client.login(username=self.user, password='test') CourseEnrollmentFactory(user=self.user, course_id=self.course.id) @@ -1995,14 +1998,20 @@ class TestIndexViewWithGating(ModuleStoreTestCase, MilestonesTestCaseMixin): self.user = UserFactory() self.course = CourseFactory.create() - self.course.enable_subsection_gating = True - self.course.save() - self.store.update_item(self.course, 0) - self.chapter = ItemFactory.create(parent=self.course, category="chapter", display_name="Chapter") - self.open_seq = ItemFactory.create(parent=self.chapter, category='sequential', display_name="Open Sequential") - ItemFactory.create(parent=self.open_seq, category='problem', display_name="Problem 1") - self.gated_seq = ItemFactory.create(parent=self.chapter, category='sequential', display_name="Gated Sequential") - ItemFactory.create(parent=self.gated_seq, category='problem', display_name="Problem 2") + with self.store.bulk_operations(self.course.id): + self.course.enable_subsection_gating = True + self.course.save() + self.store.update_item(self.course, 0) + self.chapter = ItemFactory.create(parent=self.course, category="chapter", display_name="Chapter") + self.open_seq = ItemFactory.create( + parent=self.chapter, category='sequential', display_name="Open Sequential" + ) + ItemFactory.create(parent=self.open_seq, category='problem', display_name="Problem 1") + self.gated_seq = ItemFactory.create( + parent=self.chapter, category='sequential', display_name="Gated Sequential" + ) + ItemFactory.create(parent=self.gated_seq, category='problem', display_name="Problem 2") + gating_api.add_prerequisite(self.course.id, self.open_seq.location) gating_api.set_required_content(self.course.id, self.gated_seq.location, self.open_seq.location, 100) diff --git a/lms/djangoapps/grades/tests/test_grades.py b/lms/djangoapps/grades/tests/test_grades.py index 66505656ce..1310ce2475 100644 --- a/lms/djangoapps/grades/tests/test_grades.py +++ b/lms/djangoapps/grades/tests/test_grades.py @@ -148,20 +148,21 @@ class TestWeightedProblems(SharedModuleStoreTestCase): def setUpClass(cls): super(TestWeightedProblems, cls).setUpClass() cls.course = CourseFactory.create() - cls.chapter = ItemFactory.create(parent=cls.course, category="chapter", display_name="chapter") - cls.sequential = ItemFactory.create(parent=cls.chapter, category="sequential", display_name="sequential") - cls.vertical = ItemFactory.create(parent=cls.sequential, category="vertical", display_name="vertical1") - problem_xml = cls._create_problem_xml() - cls.problems = [] - for i in range(2): - cls.problems.append( - ItemFactory.create( - parent=cls.vertical, - category="problem", - display_name="problem_{}".format(i), - data=problem_xml, + with cls.store.bulk_operations(cls.course.id): + cls.chapter = ItemFactory.create(parent=cls.course, category="chapter", display_name="chapter") + cls.sequential = ItemFactory.create(parent=cls.chapter, category="sequential", display_name="sequential") + cls.vertical = ItemFactory.create(parent=cls.sequential, category="vertical", display_name="vertical1") + problem_xml = cls._create_problem_xml() + cls.problems = [] + for i in range(2): + cls.problems.append( + ItemFactory.create( + parent=cls.vertical, + category="problem", + display_name="problem_{}".format(i), + data=problem_xml, + ) ) - ) def setUp(self): super(TestWeightedProblems, self).setUp() @@ -261,20 +262,21 @@ class TestScoreForModule(SharedModuleStoreTestCase): def setUpClass(cls): super(TestScoreForModule, cls).setUpClass() cls.course = CourseFactory.create() - cls.a = ItemFactory.create(parent=cls.course, category="chapter", display_name="a") - cls.b = ItemFactory.create(parent=cls.a, category="sequential", display_name="b") - cls.c = ItemFactory.create(parent=cls.a, category="sequential", display_name="c") - cls.d = ItemFactory.create(parent=cls.b, category="vertical", display_name="d") - cls.e = ItemFactory.create(parent=cls.b, category="vertical", display_name="e") - cls.f = ItemFactory.create(parent=cls.b, category="vertical", display_name="f") - cls.g = ItemFactory.create(parent=cls.c, category="vertical", display_name="g") - cls.h = ItemFactory.create(parent=cls.d, category="problem", display_name="h") - cls.i = ItemFactory.create(parent=cls.d, category="problem", display_name="i") - cls.j = ItemFactory.create(parent=cls.e, category="problem", display_name="j") - cls.k = ItemFactory.create(parent=cls.e, category="html", display_name="k") - cls.l = ItemFactory.create(parent=cls.e, category="problem", display_name="l") - cls.m = ItemFactory.create(parent=cls.f, category="html", display_name="m") - cls.n = ItemFactory.create(parent=cls.g, category="problem", display_name="n") + with cls.store.bulk_operations(cls.course.id): + cls.a = ItemFactory.create(parent=cls.course, category="chapter", display_name="a") + cls.b = ItemFactory.create(parent=cls.a, category="sequential", display_name="b") + cls.c = ItemFactory.create(parent=cls.a, category="sequential", display_name="c") + cls.d = ItemFactory.create(parent=cls.b, category="vertical", display_name="d") + cls.e = ItemFactory.create(parent=cls.b, category="vertical", display_name="e") + cls.f = ItemFactory.create(parent=cls.b, category="vertical", display_name="f") + cls.g = ItemFactory.create(parent=cls.c, category="vertical", display_name="g") + cls.h = ItemFactory.create(parent=cls.d, category="problem", display_name="h") + cls.i = ItemFactory.create(parent=cls.d, category="problem", display_name="i") + cls.j = ItemFactory.create(parent=cls.e, category="problem", display_name="j") + cls.k = ItemFactory.create(parent=cls.e, category="html", display_name="k") + cls.l = ItemFactory.create(parent=cls.e, category="problem", display_name="l") + cls.m = ItemFactory.create(parent=cls.f, category="html", display_name="m") + cls.n = ItemFactory.create(parent=cls.g, category="problem", display_name="n") cls.request = get_mock_request(UserFactory()) CourseEnrollment.enroll(cls.request.user, cls.course.id) @@ -341,96 +343,97 @@ class TestGetModuleScore(LoginEnrollmentTestCase, SharedModuleStoreTestCase): def setUpClass(cls): super(TestGetModuleScore, cls).setUpClass() cls.course = CourseFactory.create() - cls.chapter = ItemFactory.create( - parent=cls.course, - category="chapter", - display_name="Test Chapter" - ) - cls.seq1 = ItemFactory.create( - parent=cls.chapter, - category='sequential', - display_name="Test Sequential 1", - graded=True - ) - cls.seq2 = ItemFactory.create( - parent=cls.chapter, - category='sequential', - display_name="Test Sequential 2", - graded=True - ) - cls.seq3 = ItemFactory.create( - parent=cls.chapter, - category='sequential', - display_name="Test Sequential 3", - graded=True - ) - cls.vert1 = ItemFactory.create( - parent=cls.seq1, - category='vertical', - display_name='Test Vertical 1' - ) - cls.vert2 = ItemFactory.create( - parent=cls.seq2, - category='vertical', - display_name='Test Vertical 2' - ) - cls.vert3 = ItemFactory.create( - parent=cls.seq3, - category='vertical', - display_name='Test Vertical 3' - ) - cls.randomize = ItemFactory.create( - parent=cls.vert2, - category='randomize', - display_name='Test Randomize' - ) - cls.library_content = ItemFactory.create( - parent=cls.vert3, - category='library_content', - display_name='Test Library Content' - ) - problem_xml = MultipleChoiceResponseXMLFactory().build_xml( - question_text='The correct answer is Choice 3', - choices=[False, False, True, False], - choice_names=['choice_0', 'choice_1', 'choice_2', 'choice_3'] - ) - cls.problem1 = ItemFactory.create( - parent=cls.vert1, - category="problem", - display_name="Test Problem 1", - data=problem_xml - ) - cls.problem2 = ItemFactory.create( - parent=cls.vert1, - category="problem", - display_name="Test Problem 2", - data=problem_xml - ) - cls.problem3 = ItemFactory.create( - parent=cls.randomize, - category="problem", - display_name="Test Problem 3", - data=problem_xml - ) - cls.problem4 = ItemFactory.create( - parent=cls.randomize, - category="problem", - display_name="Test Problem 4", - data=problem_xml - ) + with cls.store.bulk_operations(cls.course.id): + cls.chapter = ItemFactory.create( + parent=cls.course, + category="chapter", + display_name="Test Chapter" + ) + cls.seq1 = ItemFactory.create( + parent=cls.chapter, + category='sequential', + display_name="Test Sequential 1", + graded=True + ) + cls.seq2 = ItemFactory.create( + parent=cls.chapter, + category='sequential', + display_name="Test Sequential 2", + graded=True + ) + cls.seq3 = ItemFactory.create( + parent=cls.chapter, + category='sequential', + display_name="Test Sequential 3", + graded=True + ) + cls.vert1 = ItemFactory.create( + parent=cls.seq1, + category='vertical', + display_name='Test Vertical 1' + ) + cls.vert2 = ItemFactory.create( + parent=cls.seq2, + category='vertical', + display_name='Test Vertical 2' + ) + cls.vert3 = ItemFactory.create( + parent=cls.seq3, + category='vertical', + display_name='Test Vertical 3' + ) + cls.randomize = ItemFactory.create( + parent=cls.vert2, + category='randomize', + display_name='Test Randomize' + ) + cls.library_content = ItemFactory.create( + parent=cls.vert3, + category='library_content', + display_name='Test Library Content' + ) + problem_xml = MultipleChoiceResponseXMLFactory().build_xml( + question_text='The correct answer is Choice 3', + choices=[False, False, True, False], + choice_names=['choice_0', 'choice_1', 'choice_2', 'choice_3'] + ) + cls.problem1 = ItemFactory.create( + parent=cls.vert1, + category="problem", + display_name="Test Problem 1", + data=problem_xml + ) + cls.problem2 = ItemFactory.create( + parent=cls.vert1, + category="problem", + display_name="Test Problem 2", + data=problem_xml + ) + cls.problem3 = ItemFactory.create( + parent=cls.randomize, + category="problem", + display_name="Test Problem 3", + data=problem_xml + ) + cls.problem4 = ItemFactory.create( + parent=cls.randomize, + category="problem", + display_name="Test Problem 4", + data=problem_xml + ) - cls.problem5 = ItemFactory.create( - parent=cls.library_content, - category="problem", - display_name="Test Problem 5", - data=problem_xml - ) - cls.problem6 = ItemFactory.create( - parent=cls.library_content, - category="problem", - display_name="Test Problem 6", - data=problem_xml - ) + cls.problem5 = ItemFactory.create( + parent=cls.library_content, + category="problem", + display_name="Test Problem 5", + data=problem_xml + ) + cls.problem6 = ItemFactory.create( + parent=cls.library_content, + category="problem", + display_name="Test Problem 6", + data=problem_xml + ) def setUp(self): """