Skip to content

Commit

Permalink
feat: replace enrollment email with welcome email (#3394)
Browse files Browse the repository at this point in the history
* feat: replace enrollment email with welcome email

* refactor: removing course_run_enrollment code
  • Loading branch information
asajjad2 authored Feb 19, 2025
1 parent 49dbe99 commit 9033a18
Show file tree
Hide file tree
Showing 10 changed files with 17 additions and 119 deletions.
1 change: 0 additions & 1 deletion courses/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ def create_run_enrollments(
else:
successful_enrollments.append(enrollment)
if enrollment.edx_enrolled:
mail_api.send_course_run_enrollment_email(enrollment)
mail_api.send_course_run_enrollment_welcome_email(enrollment)
return successful_enrollments, edx_request_success

Expand Down
22 changes: 11 additions & 11 deletions courses/api_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,15 @@ def test_create_run_enrollments(mocker, user):
active=False,
)
patched_edx_enroll = mocker.patch("courses.api.enroll_in_edx_course_runs")
patched_send_enrollment_email = mocker.patch(
"courses.api.mail_api.send_course_run_enrollment_email"
patched_send_enrollment_welcome_email = mocker.patch(
"courses.api.mail_api.send_course_run_enrollment_welcome_email"
)

successful_enrollments, edx_request_success = create_run_enrollments(
user, runs, order=order, company=company
)
patched_edx_enroll.assert_called_once_with(user, runs)
assert patched_send_enrollment_email.call_count == num_runs
assert patched_send_enrollment_welcome_email.call_count == num_runs
assert edx_request_success is True
assert len(successful_enrollments) == num_runs
enrollments = CourseRunEnrollment.objects.order_by("run__id").all()
Expand All @@ -155,7 +155,7 @@ def test_create_run_enrollments(mocker, user):
assert enrollment.active is True
assert enrollment.edx_enrolled is True
assert enrollment.run == run
patched_send_enrollment_email.assert_any_call(enrollment)
patched_send_enrollment_welcome_email.assert_any_call(enrollment)


@pytest.mark.django_db
Expand All @@ -172,8 +172,8 @@ def test_create_run_enrollments_api_fail(mocker, user, exception_cls):
"courses.api.enroll_in_edx_course_runs", side_effect=exception_cls
)
patched_log_exception = mocker.patch("courses.api.log.exception")
patched_send_enrollment_email = mocker.patch(
"courses.api.mail_api.send_course_run_enrollment_email"
patched_send_enrollment_welcome_email = mocker.patch(
"courses.api.mail_api.send_course_run_enrollment_welcome_email"
)
run = CourseRunFactory.create()
successful_enrollments, edx_request_success = create_run_enrollments(
Expand All @@ -185,7 +185,7 @@ def test_create_run_enrollments_api_fail(mocker, user, exception_cls):
)
patched_edx_enroll.assert_called_once_with(user, [run])
patched_log_exception.assert_called_once()
patched_send_enrollment_email.assert_not_called()
patched_send_enrollment_welcome_email.assert_not_called()
assert len(successful_enrollments) == 1
assert edx_request_success is False

Expand Down Expand Up @@ -217,8 +217,8 @@ def test_create_run_enrollments_enroll_api_fail(
side_effect=exception_cls(user, runs[2], inner_exception),
)
patched_log_exception = mocker.patch("courses.api.log.exception")
patched_send_enrollment_email = mocker.patch(
"courses.api.mail_api.send_course_run_enrollment_email"
patched_send_enrollment_welcome_email = mocker.patch(
"courses.api.mail_api.send_course_run_enrollment_welcome_email"
)
successful_enrollments = []
edx_request_success = False
Expand All @@ -240,7 +240,7 @@ def test_create_run_enrollments_enroll_api_fail(
patched_log_exception.assert_called_once()
else:
patched_log_exception.assert_not_called()
patched_send_enrollment_email.assert_not_called()
patched_send_enrollment_welcome_email.assert_not_called()
expected_enrollments = 0 if not keep_failed_enrollments else num_runs
assert len(successful_enrollments) == expected_enrollments
assert edx_request_success is False
Expand All @@ -267,7 +267,7 @@ def test_create_run_enrollments_creation_fail(mocker, user):
)
patched_edx_enroll.assert_called_once_with(user, runs)
patched_log_exception.assert_called_once()
patched_mail_api.send_course_run_enrollment_email.assert_not_called()
patched_mail_api.send_course_run_enrollment_welcome_email.assert_not_called()
patched_mail_api.send_enrollment_failure_message.assert_called_once()
assert successful_enrollments == [enrollment]
assert edx_request_success is True
Expand Down
1 change: 0 additions & 1 deletion courses/management/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ def create_run_enrollment(
if enrolled_in_edx:
run_enrollment.edx_enrolled = True
run_enrollment.save_and_log(None)
mail_api.send_course_run_enrollment_email(run_enrollment)
mail_api.send_course_run_enrollment_welcome_email(run_enrollment)
elif not keep_failed_enrollments:
if created:
Expand Down
2 changes: 1 addition & 1 deletion ecommerce/api_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1281,7 +1281,7 @@ def test_enroll_user_in_order_items(mocker, user, has_redemption):
"""
patched_enroll = mocker.patch("courses.api.enroll_in_edx_course_runs")
patched_send_email = mocker.patch(
"ecommerce.mail_api.send_course_run_enrollment_email"
"ecommerce.mail_api.send_course_run_enrollment_welcome_email"
)
program = ProgramFactory.create()
runs = CourseRunFactory.create_batch(2, course__program=program)
Expand Down
23 changes: 0 additions & 23 deletions ecommerce/mail_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
from mail.constants import (
EMAIL_B2B_RECEIPT,
EMAIL_BULK_ENROLL,
EMAIL_COURSE_RUN_ENROLLMENT,
EMAIL_COURSE_RUN_UNENROLLMENT,
EMAIL_PRODUCT_ORDER_RECEIPT,
EMAIL_WELCOME_COURSE_RUN_ENROLLMENT,
Expand Down Expand Up @@ -151,28 +150,6 @@ def send_bulk_enroll_emails(bulk_assignment_id, product_coupon_assignments):
)


def send_course_run_enrollment_email(enrollment):
"""
Notify the user of successful enrollment for a course run
Args:
enrollment (CourseRunEnrollment): the enrollment for which to send the email
"""
try:
user = enrollment.user
api.send_message(
api.message_for_recipient(
user.email,
api.context_for_user(
user=user, extra_context={"enrollment": enrollment}
),
EMAIL_COURSE_RUN_ENROLLMENT,
)
)
except: # noqa: E722
log.exception("Error sending enrollment success email")


def send_course_run_unenrollment_email(enrollment):
"""
Notify the user of successful unenrollment for a course run
Expand Down
36 changes: 0 additions & 36 deletions ecommerce/mail_api_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
ENROLL_ERROR_EMAIL_SUBJECT,
send_b2b_receipt_email,
send_bulk_enroll_emails,
send_course_run_enrollment_email,
send_course_run_enrollment_welcome_email,
send_ecommerce_order_receipt,
send_enrollment_failure_message,
Expand All @@ -41,7 +40,6 @@
from mail.constants import (
EMAIL_B2B_RECEIPT,
EMAIL_BULK_ENROLL,
EMAIL_COURSE_RUN_ENROLLMENT,
EMAIL_PRODUCT_ORDER_RECEIPT,
EMAIL_WELCOME_COURSE_RUN_ENROLLMENT,
)
Expand Down Expand Up @@ -114,40 +112,6 @@ def test_send_bulk_enroll_emails(mocker, settings):
)


def test_send_course_run_enrollment_email(mocker):
"""send_course_run_enrollment_email should send an email for the given enrollment"""
patched_mail_api = mocker.patch("ecommerce.mail_api.api")
enrollment = CourseRunEnrollmentFactory.create()

send_course_run_enrollment_email(enrollment)

patched_mail_api.context_for_user.assert_called_once_with(
user=enrollment.user, extra_context={"enrollment": enrollment}
)
patched_mail_api.message_for_recipient.assert_called_once_with(
enrollment.user.email,
patched_mail_api.context_for_user.return_value,
EMAIL_COURSE_RUN_ENROLLMENT,
)
patched_mail_api.send_message.assert_called_once_with(
patched_mail_api.message_for_recipient.return_value
)


def test_send_course_run_enrollment_email_error(mocker):
"""send_course_run_enrollment_email handle and log errors"""
patched_mail_api = mocker.patch("ecommerce.mail_api.api")
patched_log = mocker.patch("ecommerce.mail_api.log")
patched_mail_api.send_message.side_effect = Exception("error")
enrollment = CourseRunEnrollmentFactory.create()

send_course_run_enrollment_email(enrollment)

patched_log.exception.assert_called_once_with(
"Error sending enrollment success email"
)


@pytest.mark.parametrize("enabled", [True, False])
def test_send_course_run_enrollment_welcome_email(settings, mocker, enabled):
"""send_course_run_enrollment_welcome_email should send a welcome email for the given enrollment"""
Expand Down
2 changes: 0 additions & 2 deletions mail/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
EMAIL_VERIFICATION = "verification"
EMAIL_PW_RESET = "password_reset"
EMAIL_BULK_ENROLL = "bulk_enroll"
EMAIL_COURSE_RUN_ENROLLMENT = "course_run_enrollment"
EMAIL_COURSE_RUN_UNENROLLMENT = "course_run_unenrollment"
EMAIL_B2B_RECEIPT = "b2b_receipt"
EMAIL_PRODUCT_ORDER_RECEIPT = "product_order_receipt"
Expand All @@ -14,7 +13,6 @@
EMAIL_VERIFICATION: "Verify Email",
EMAIL_PW_RESET: "Password Reset",
EMAIL_BULK_ENROLL: "Bulk Enrollment",
EMAIL_COURSE_RUN_ENROLLMENT: "Course Run Enrollment",
EMAIL_B2B_RECEIPT: "Enrollment Code Purchase Receipt",
EMAIL_CHANGE_EMAIL: "Change Email",
EMAIL_WELCOME_COURSE_RUN_ENROLLMENT: "Welcome Course Run Enrollment",
Expand Down
42 changes: 0 additions & 42 deletions mail/templates/course_run_enrollment/body.html

This file was deleted.

1 change: 0 additions & 1 deletion mail/templates/course_run_enrollment/subject.txt

This file was deleted.

6 changes: 5 additions & 1 deletion mail/templates/welcome_course_run_enrollment/body.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@
expect to gain access to the course materials and platform on the
scheduled start date. You will not be able to access any of the
course content before the start date and time. To log in and start
your course, visit your MIT xPRO account dashboard.
your course, visit your
<a href="{{ base_url }}{% url 'user-dashboard' %}"
>{{ site_name }}
account dashboard</a
>.
</p>
<p style="margin: 0 0 10px">
<strong><u>In-Course Support:</u></strong
Expand Down

0 comments on commit 9033a18

Please sign in to comment.