From a3ca2a2edbb6529174a958be896b4873888a08a6 Mon Sep 17 00:00:00 2001 From: Muhammad Noyan Aziz Date: Fri, 27 Jun 2025 22:48:52 +0500 Subject: [PATCH 1/3] feat: added a generic creditPurchase Url logic --- example.env.config.js | 1 + src/config/index.js | 1 + src/data/services/lms/urls.js | 9 ++++++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/example.env.config.js b/example.env.config.js index 9637d1985..52656aa67 100644 --- a/example.env.config.js +++ b/example.env.config.js @@ -24,6 +24,7 @@ module.exports = { BASE_URL: 'localhost:1996', LMS_BASE_URL: 'http://localhost:18000', ECOMMERCE_BASE_URL: 'http://localhost:18130', + CREDIT_PURCHASE_URL: 'http://localhost:8140', LOGIN_URL: 'http://localhost:18000/login', LOGOUT_URL: 'http://localhost:18000/logout', LOGO_URL: 'https://edx-cdn.org/v3/default/logo.svg', diff --git a/src/config/index.js b/src/config/index.js index 813332920..ce55cf093 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -2,6 +2,7 @@ const configuration = { // BASE_URL: process.env.BASE_URL, LMS_BASE_URL: process.env.LMS_BASE_URL, ECOMMERCE_BASE_URL: process.env.ECOMMERCE_BASE_URL, + CREDIT_PURCHASE_URL: process.env.CREDIT_PURCHASE_URL, // LOGIN_URL: process.env.LOGIN_URL, // LOGOUT_URL: process.env.LOGOUT_URL, // CSRF_TOKEN_API_PATH: process.env.CSRF_TOKEN_API_PATH, diff --git a/src/data/services/lms/urls.js b/src/data/services/lms/urls.js index 30c2bbf1b..40d63682a 100644 --- a/src/data/services/lms/urls.js +++ b/src/data/services/lms/urls.js @@ -2,8 +2,6 @@ import { StrictDict } from 'utils'; import { getConfig } from '@edx/frontend-platform'; -export const getEcommerceUrl = () => getConfig().ECOMMERCE_BASE_URL; - const getBaseUrl = () => getConfig().LMS_BASE_URL; export const getApiUrl = () => (`${getConfig().LMS_BASE_URL}/api`); @@ -24,7 +22,12 @@ export const learningMfeUrl = (url) => updateUrl(getConfig().LEARNING_BASE_URL, // static view url const programsUrl = () => baseAppUrl('/dashboard/programs'); -export const creditPurchaseUrl = (courseId) => `${getEcommerceUrl()}/credit/checkout/${courseId}/`; +export const creditPurchaseUrl = (courseId) => { + const config = getConfig(); + return config.CREDIT_PURCHASE_URL + ? `${config.CREDIT_PURCHASE_URL}/credit/checkout/${courseId}/` + : `${config.ECOMMERCE_BASE_URL}/credit/checkout/${courseId}/`; +}; export const creditRequestUrl = (providerId) => `${getApiUrl()}/credit/v1/providers/${providerId}/request/`; export default StrictDict({ From 012dad5db8672eaf4bc37eecdaad719a9eaa6ac6 Mon Sep 17 00:00:00 2001 From: Muhammad Noyan Aziz Date: Fri, 27 Jun 2025 22:51:58 +0500 Subject: [PATCH 2/3] refactor: removed specific url items --- src/data/services/lms/urls.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/services/lms/urls.js b/src/data/services/lms/urls.js index 40d63682a..445e09d56 100644 --- a/src/data/services/lms/urls.js +++ b/src/data/services/lms/urls.js @@ -25,7 +25,7 @@ const programsUrl = () => baseAppUrl('/dashboard/programs'); export const creditPurchaseUrl = (courseId) => { const config = getConfig(); return config.CREDIT_PURCHASE_URL - ? `${config.CREDIT_PURCHASE_URL}/credit/checkout/${courseId}/` + ? `${config.CREDIT_PURCHASE_URL}/${courseId}/` : `${config.ECOMMERCE_BASE_URL}/credit/checkout/${courseId}/`; }; export const creditRequestUrl = (providerId) => `${getApiUrl()}/credit/v1/providers/${providerId}/request/`; From c9b8ff2eb03b367c7d8f455effe7b9cf3e805304 Mon Sep 17 00:00:00 2001 From: Muhammad Noyan Aziz Date: Sat, 28 Jun 2025 04:54:06 +0500 Subject: [PATCH 3/3] refactor: added unit tests --- src/data/services/lms/urls.test.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/data/services/lms/urls.test.js b/src/data/services/lms/urls.test.js index 8b4ae8b1a..26a4e074a 100644 --- a/src/data/services/lms/urls.test.js +++ b/src/data/services/lms/urls.test.js @@ -38,6 +38,13 @@ describe('urls', () => { const url = urls.creditPurchaseUrl(courseId); expect(url).toEqual(expect.stringContaining(courseId)); }); + it('returns CREDIT_PURCHASE_URL if set, with courseId', () => { + const courseId = 'test-course-id'; + const config = getConfig(); + config.CREDIT_PURCHASE_URL = 'http://credit-purchase.example.com'; + const url = urls.creditPurchaseUrl(courseId); + expect(url).toBe(`http://credit-purchase.example.com/${courseId}/`); + }); }); describe('creditRequestUrl', () => { it('builds from api url and loads providerId', () => {