fix: fix buy_subscription_url to use get method (#32079)
* fix: fix buy_subscription_url to use get method
This commit is contained in:
committed by
GitHub
parent
b852344fcf
commit
2a7b400770
@@ -66,6 +66,7 @@ class ProgramsFragmentView(EdxFragmentView):
|
||||
'programs': meter.engaged_programs,
|
||||
'progress': meter.progress(),
|
||||
'programs_subscription_data': programs_subscription_data,
|
||||
'user_preferences': get_user_preferences(user),
|
||||
'is_user_b2c_subscriptions_enabled': is_user_b2c_subscriptions_enabled
|
||||
}
|
||||
html = render_to_string('learner_dashboard/programs_fragment.html', context)
|
||||
|
||||
@@ -5312,4 +5312,4 @@ SUBSCRIPTIONS_ROOT_URL = ""
|
||||
SUBSCRIPTIONS_API_PATH = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscription/"
|
||||
|
||||
SUBSCRIPTIONS_LEARNER_HELP_CENTER_URL = None
|
||||
SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscribe/"
|
||||
SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscribe"
|
||||
|
||||
@@ -502,7 +502,7 @@ SUBSCRIPTIONS_ROOT_URL = "http://host.docker.internal:18750"
|
||||
SUBSCRIPTIONS_API_PATH = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscription/"
|
||||
|
||||
SUBSCRIPTIONS_LEARNER_HELP_CENTER_URL = None
|
||||
SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscribe/"
|
||||
SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscribe"
|
||||
|
||||
################# New settings must go ABOVE this line #################
|
||||
########################################################################
|
||||
|
||||
@@ -682,4 +682,4 @@ SUBSCRIPTIONS_ROOT_URL = "http://localhost:18750"
|
||||
SUBSCRIPTIONS_API_PATH = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscription/"
|
||||
|
||||
SUBSCRIPTIONS_LEARNER_HELP_CENTER_URL = None
|
||||
SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscribe/"
|
||||
SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL = f"{SUBSCRIPTIONS_ROOT_URL}/api/v1/stripe-subscribe"
|
||||
|
||||
@@ -6,6 +6,7 @@ import uuid
|
||||
from collections import namedtuple
|
||||
from copy import deepcopy
|
||||
from unittest import mock
|
||||
from urllib.parse import urlencode
|
||||
|
||||
import ddt
|
||||
import httpretty
|
||||
@@ -43,6 +44,7 @@ from openedx.core.djangoapps.programs.utils import (
|
||||
ProgramDataExtender,
|
||||
ProgramMarketingDataExtender,
|
||||
ProgramProgressMeter,
|
||||
get_buy_subscription_url,
|
||||
get_certificates,
|
||||
get_logged_in_program_certificate_url,
|
||||
get_programs_subscription_data,
|
||||
@@ -1798,3 +1800,32 @@ class TestGetProgramsSubscriptionData(TestCase):
|
||||
}
|
||||
)
|
||||
assert result == subscription_data
|
||||
|
||||
|
||||
@override_settings(SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL='http://subscription_buy_url')
|
||||
@ddt.ddt
|
||||
class TestBuySubscriptionUrl(TestCase):
|
||||
"""
|
||||
Tests for the BuySubscriptionUrl utility function.
|
||||
"""
|
||||
@ddt.data(
|
||||
{
|
||||
'skus': ['TESTSKU'],
|
||||
'program_uuid': '12345678-9012-3456-7890-123456789012'
|
||||
},
|
||||
{
|
||||
'skus': ['TESTSKU1', 'TESTSKU2', 'TESTSKU3'],
|
||||
'program_uuid': '12345678-9012-3456-7890-123456789012'
|
||||
},
|
||||
{
|
||||
'skus': [],
|
||||
'program_uuid': '12345678-9012-3456-7890-123456789012'
|
||||
}
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_get_buy_subscription_url(self, skus, program_uuid):
|
||||
""" Verify the subscription purchase page URL is properly constructed and returned. """
|
||||
url = get_buy_subscription_url(program_uuid, skus)
|
||||
formatted_skus = urlencode({'sku': skus}, doseq=True)
|
||||
expected_url = f'{settings.SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL}/{program_uuid}/?{formatted_skus}'
|
||||
assert url == expected_url
|
||||
|
||||
@@ -6,7 +6,7 @@ import logging
|
||||
from collections import defaultdict
|
||||
from copy import deepcopy
|
||||
from itertools import chain
|
||||
from urllib.parse import urljoin, urlparse, urlunparse
|
||||
from urllib.parse import urlencode, urljoin, urlparse, urlunparse
|
||||
|
||||
import requests
|
||||
from dateutil.parser import parse
|
||||
@@ -65,6 +65,15 @@ def get_program_and_course_data(site, user, program_uuid, mobile_only=False):
|
||||
return program_data, course_data
|
||||
|
||||
|
||||
def get_buy_subscription_url(program_uuid, skus):
|
||||
"""
|
||||
Returns the URL to the Subscription Purchase page for the given program UUID and course Skus.
|
||||
"""
|
||||
formatted_skus = urlencode({'sku': skus}, doseq=True)
|
||||
url = f'{settings.SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL}/{program_uuid}/?{formatted_skus}'
|
||||
return url
|
||||
|
||||
|
||||
def get_program_urls(program_data):
|
||||
"""Returns important urls of program."""
|
||||
from lms.djangoapps.learner_dashboard.utils import FAKE_COURSE_KEY, strip_course_id
|
||||
@@ -85,7 +94,7 @@ def get_program_urls(program_data):
|
||||
'commerce_api_url': reverse('commerce_api:v0:baskets:create'),
|
||||
'buy_button_url': ecommerce_service.get_checkout_page_url(*skus),
|
||||
'program_record_url': program_record_url,
|
||||
'buy_subscription_url': settings.SUBSCRIPTIONS_BUY_SUBSCRIPTION_URL,
|
||||
'buy_subscription_url': get_buy_subscription_url(program_uuid, skus),
|
||||
'manage_subscription_url': settings.ORDER_HISTORY_MICROFRONTEND_URL,
|
||||
'subscriptions_learner_help_center_url': settings.SUBSCRIPTIONS_LEARNER_HELP_CENTER_URL
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user