From b19264974bc3eb0ef48d6f2367408870af057f8f Mon Sep 17 00:00:00 2001 From: attiyaishaque Date: Fri, 22 Apr 2016 17:09:43 +0500 Subject: [PATCH] Adding unit test --- lms/djangoapps/courseware/tests/test_views.py | 42 +++++++++++++++++++ lms/djangoapps/courseware/views/views.py | 26 ++++++------ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index cf5c9cba88..8327f065c1 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -323,6 +323,48 @@ class ViewsTestCase(ModuleStoreTestCase): self.assertNotIn('Problem 1', response.content) self.assertNotIn('Problem 2', response.content) + def test_enroll_staff(self): + """ + Here we check two methods GET and POST and should be a staff user + """ + self.user.is_staff = True + self.user.save() + self.client.login(username=self.user.username, password=self.password) + + # create the course + course = CourseFactory.create() + chapter = ItemFactory.create(parent=course, category='chapter') + section = ItemFactory.create(parent=chapter, category='sequential', display_name="Sequence") + + # create the _next parameter + courseware_url = reverse( + 'courseware_section', + kwargs={ + 'course_id': unicode(course.id), + 'chapter': chapter.url_name, + 'section': section.url_name, + } + ) + '?activate_block_id=test_block_id' + + # create the url for enroll_staff view + url = "{enroll_staff_url}?next={courseware_url}".format( + enroll_staff_url= reverse('enroll_staff', kwargs={'course_id': unicode(course.id)}), + courseware_url= courseware_url + ) + + # Check the GET method + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + response_content = response.content + self.assertIn('Enroll' , response_content) + self.assertIn('Continue', response_content) + + # Check the POST Method + data = {'enroll' : 'Enroll'} + response_post = self.client.post(url, data=data) + # here we check the status code 302 because of the redirect + self.assertEqual(response_post.status_code, 302) + @unittest.skipUnless(settings.FEATURES.get('ENABLE_SHOPPING_CART'), "Shopping Cart not enabled in settings") @patch.dict(settings.FEATURES, {'ENABLE_PAID_COURSE_REGISTRATION': True}) def test_course_about_in_cart(self): diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py index 294b816ecf..53b657ac0f 100644 --- a/lms/djangoapps/courseware/views/views.py +++ b/lms/djangoapps/courseware/views/views.py @@ -840,27 +840,29 @@ def get_cosmetic_display_price(course, registration_price): @require_global_staff -@require_http_methods(['POST', 'GET']) +@ensure_valid_course_key def enroll_staff(request, course_id): - ''' + """ 1. Should be staff 2. should be a valid course_id 3. shouldn't be enrolled before 4. The requested view url to redirect - URL-ABC-GOTO-HERE- + GET + html: return enroll staff page - 1. You want to register for this course? - Confirm: - 1. User is valid staff user who wants to enroll. - 2. Course is valid course - 2. Yes - 3. Post request, enroll the user and redirect him to the requested view + POST + 1. You want to register for this course? + Confirm: + 1. User is valid staff user who wants to enroll. + 2. Course is valid course + 2. Yes + 3. Post request, enroll the user and redirect him to the requested view :param request: :param course_id: :return: - ''' + """ user = request.user course_key = CourseKey.from_string(course_id) _next = urllib.quote_plus(request.GET.get('next', 'info'), safe='/:?=') @@ -876,8 +878,8 @@ def enroll_staff(request, course_id): 'csrftoken': csrf(request)["csrf_token"] }) - elif request.method == 'POST' and 'enroll' in request.POST.dict(): - enrollment = CourseEnrollment.get_or_create_enrollment(request.user, course_key) + elif request.method == 'POST' and 'enroll' in request.POST: + enrollment = CourseEnrollment.get_or_create_enrollment(user, course_key) enrollment.update_enrollment(is_active=True) log.info( u"User %s enrolled in %s via `enroll_staff` view",