Merge pull request #37504 from Pearson-Advance/felipeb/learning-microfrontend-url-site-aware

feat: make LEARNING_MICROFRONTEND_URL site aware.
This commit is contained in:
Feanil Patel
2025-12-23 10:58:34 -05:00
committed by GitHub
10 changed files with 205 additions and 18 deletions

View File

@@ -73,9 +73,11 @@ def send_ace_message(goal, session_id):
message_context = get_base_template_context(site)
course_home_url = get_learning_mfe_home_url(course_key=goal.course_key, url_fragment='home')
goals_unsubscribe_url = f'{settings.LEARNING_MICROFRONTEND_URL}/goal-unsubscribe/{goal.unsubscribe_token}'
learning_microfrontend_url = configuration_helpers.get_value(
'LEARNING_MICROFRONTEND_URL',
settings.LEARNING_MICROFRONTEND_URL,
)
goals_unsubscribe_url = f'{learning_microfrontend_url}/goal-unsubscribe/{goal.unsubscribe_token}'
language = get_user_preference(user, LANGUAGE_KEY)
# Code to allow displaying different banner images for different languages

View File

@@ -12,6 +12,7 @@ import ddt
from django.conf import settings
from django.core.management import call_command
from django.test import TestCase
from django.test.utils import override_settings
from edx_toggles.toggles.testutils import override_waffle_flag
from freezegun import freeze_time
from waffle import get_waffle_flag_model # pylint: disable=invalid-django-waffle-import
@@ -235,6 +236,45 @@ class TestGoalReminderEmailCommand(TestCase):
send_ace_message(goal, str(uuid.uuid4()))
assert mock_ace.called is value
def test_goals_unsubscribe_url_uses_site_config(self):
"""Test goals unsubscribe URL uses site-configured MFE base."""
goal = self.make_valid_goal()
with mock.patch('lms.djangoapps.course_goals.management.commands.goal_reminder_email.ace.send') as mock_ace:
with mock.patch(
'lms.djangoapps.course_goals.management.commands.goal_reminder_email.configuration_helpers.get_value',
return_value='https://learning.siteconf',
) as mock_get_value:
assert send_ace_message(goal, str(uuid.uuid4())) is True
assert mock_ace.call_count == 1
msg = mock_ace.call_args[0][0]
assert msg.context[
'goals_unsubscribe_url'
] == f'https://learning.siteconf/goal-unsubscribe/{goal.unsubscribe_token}'
mock_get_value.assert_any_call('LEARNING_MICROFRONTEND_URL', settings.LEARNING_MICROFRONTEND_URL)
def test_goals_unsubscribe_url_falls_back_to_settings(self):
"""Test goals unsubscribe URL falls back to settings when site config is absent."""
default_url = 'https://learning.default'
goal = self.make_valid_goal()
with override_settings(LEARNING_MICROFRONTEND_URL=default_url):
with mock.patch(
'lms.djangoapps.course_goals.management.commands.goal_reminder_email.ace.send',
) as mock_ace:
with mock.patch(
(
'lms.djangoapps.course_goals.management.commands.'
'goal_reminder_email.configuration_helpers.get_value'
),
side_effect=lambda k, d: d,
) as mock_get_value:
assert send_ace_message(goal, str(uuid.uuid4())) is True
assert mock_ace.call_count == 1
msg = mock_ace.call_args[0][0]
assert msg.context['goals_unsubscribe_url'] == f'{default_url}/goal-unsubscribe/{goal.unsubscribe_token}'
mock_get_value.assert_any_call('LEARNING_MICROFRONTEND_URL', default_url)
class TestGoalReminderEmailSES(TestCase):
"""