From c547ac728632f4d051753570d26ff0deee640f4f Mon Sep 17 00:00:00 2001 From: Sarina Canelake <sarina@edx.org> Date: Mon, 25 Nov 2013 16:30:18 -0500 Subject: [PATCH] Fix bulk email acceptance test --- common/djangoapps/terrain/course_helpers.py | 16 ++++------------ lms/djangoapps/instructor/features/bulk_email.feature | 2 +- lms/djangoapps/instructor/features/bulk_email.py | 63 +++++++++++++++++++++++++++++++++++---------------------------- 3 files changed, 40 insertions(+), 41 deletions(-) diff --git a/common/djangoapps/terrain/course_helpers.py b/common/djangoapps/terrain/course_helpers.py index 40c89b1..7e70016 100644 --- a/common/djangoapps/terrain/course_helpers.py +++ b/common/djangoapps/terrain/course_helpers.py @@ -44,6 +44,8 @@ def log_in(username='robot', password='test', email='robot@edx.org', name='Robot def register_by_course_id(course_id, username='robot', password='test', is_staff=False): create_user(username, password) user = User.objects.get(username=username) + # Note: this flag makes the user global staff - that is, an edX employee - not a course staff. + # See courseware.tests.factories for StaffFactory and InstructorFactory. if is_staff: user.is_staff = True user.save() @@ -51,18 +53,8 @@ def register_by_course_id(course_id, username='robot', password='test', is_staff @world.absorb -def add_to_course_staff(username, course_num): - """ - Add the user with `username` to the course staff group - for `course_num`. - """ - # Based on code in lms/djangoapps/courseware/access.py - group_name = "instructor_{}".format(course_num) - group, _ = Group.objects.get_or_create(name=group_name) - group.save() - - user = User.objects.get(username=username) - user.groups.add(group) +def enroll_user(user, course_id): + CourseEnrollment.enroll(user, course_id) @world.absorb diff --git a/lms/djangoapps/instructor/features/bulk_email.feature b/lms/djangoapps/instructor/features/bulk_email.feature index 695fe3b..cb71007 100644 --- a/lms/djangoapps/instructor/features/bulk_email.feature +++ b/lms/djangoapps/instructor/features/bulk_email.feature @@ -1,5 +1,5 @@ @shard_2 -Feature: LMS.Bulk Email +Feature: LMS.Instructor Dash Bulk Email As an instructor or course staff, In order to communicate with students and staff I want to send email to staff and students in a course. diff --git a/lms/djangoapps/instructor/features/bulk_email.py b/lms/djangoapps/instructor/features/bulk_email.py index f2f541b..dac06e2 100644 --- a/lms/djangoapps/instructor/features/bulk_email.py +++ b/lms/djangoapps/instructor/features/bulk_email.py @@ -11,6 +11,8 @@ from nose.tools import assert_in, assert_true, assert_equal # pylint: disable=E from django.core.management import call_command from django.conf import settings +from courseware.tests.factories import StaffFactory, InstructorFactory + @step(u'Given I am "([^"]*)" for a course') def i_am_an_instructor(step, role): # pylint: disable=W0613 @@ -27,47 +29,53 @@ def i_am_an_instructor(step, role): # pylint: disable=W0613 number='999', display_name='Test Course' ) + world.course_id = 'edx/999/Test_Course' - # Register the instructor as staff for the course - world.register_by_course_id( - 'edx/999/Test_Course', - username='instructor', - password='password', - is_staff=True - ) - world.add_to_course_staff('instructor', '999') + try: + # See if we've defined the instructor & staff user yet + world.instructor + except AttributeError: + # Make & register an instructor for the course + world.instructor = InstructorFactory(course=course.location) + world.enroll_user(world.instructor, world.course_id) - # Register another staff member - world.register_by_course_id( - 'edx/999/Test_Course', - username='staff', - password='password', - is_staff=True - ) - world.add_to_course_staff('staff', '999') + # Make & register a staff member + world.staff = StaffFactory(course=course.location) + world.enroll_user(world.staff, world.course_id) - # Register a student + # Make & register a student world.register_by_course_id( 'edx/999/Test_Course', username='student', - password='password', + password='test', is_staff=False ) # Log in as the an instructor or staff for the course - world.log_in( - username=role, - password='password', - email="instructor@edx.org", - name="Instructor" - ) + my_email = None + if role == 'instructor': + my_email = world.instructor.email + world.log_in( + username=world.instructor.username, + password='test', + email=my_email, + name=world.instructor.profile.name + ) + else: + my_email = world.staff.email + world.log_in( + username=world.staff.username, + password='test', + email=world.staff.email, + name=world.staff.profile.name + ) # Store the expected recipients # given each "send to" option world.expected_addresses = { - 'myself': [role + '@edx.org'], - 'course staff': ['instructor@edx.org', 'staff@edx.org'], - 'students, staff, and instructors': ['instructor@edx.org', 'staff@edx.org', 'student@edx.org'] + 'myself': [my_email], + 'course staff': [world.staff.email, world.instructor.email], + 'students, staff, and instructors': [world.staff.email, world.instructor.email, 'student@edx.org'] } @@ -131,7 +139,6 @@ UNSUBSCRIBE_MSG = 'To stop receiving email like this' @step(u'Email is sent to "([^"]*)"') def then_the_email_is_sent(step, recipient): - # Check that the recipient is valid assert_in( recipient, SEND_TO_OPTIONS, -- libgit2 0.26.0