From 254ccfccb6d36532916b844cd91750573f2380d4 Mon Sep 17 00:00:00 2001 From: Leangseu Kim Date: Tue, 25 Oct 2022 15:40:43 -0400 Subject: [PATCH] fix: add handler when url is null --- src/data/services/lms/urls.js | 7 +++--- src/data/services/lms/urls.test.js | 35 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 src/data/services/lms/urls.test.js diff --git a/src/data/services/lms/urls.js b/src/data/services/lms/urls.js index ced469e..c0ce0ec 100644 --- a/src/data/services/lms/urls.js +++ b/src/data/services/lms/urls.js @@ -12,10 +12,11 @@ const courseUnenroll = `${baseUrl}/change_enrollment`; const updateEmailSettings = `${api}/change_email_settings`; const entitlementEnrollment = (uuid) => `${api}/entitlements/v1/entitlements/${uuid}/enrollments`; -const isAbsoluteUrl = (url) => url.startsWith('http://') || url.startsWith('https://'); +// if url is null or absolute, return it as is +const updateUrl = (base, url) => ((url == null || url.startsWith('http://') || url.startsWith('https://')) ? url : `${base}${url}`); -export const baseAppUrl = (url) => (isAbsoluteUrl(url) ? url : baseUrl + url); -export const learningMfeUrl = (url) => (isAbsoluteUrl(url) ? url : configuration.LEARNING_BASE_URL + url); +export const baseAppUrl = (url) => updateUrl(baseUrl, url); +export const learningMfeUrl = (url) => updateUrl(configuration.LEARNING_BASE_URL, url); // static view url const programsUrl = baseAppUrl('/dashboard/programs'); diff --git a/src/data/services/lms/urls.test.js b/src/data/services/lms/urls.test.js new file mode 100644 index 0000000..2d7ad94 --- /dev/null +++ b/src/data/services/lms/urls.test.js @@ -0,0 +1,35 @@ +import { configuration } from 'config'; +import * as urls from './urls'; + +describe('urls', () => { + describe('baseAppUrl', () => { + it('returns the url if it is not relative', () => { + const url = 'http://edx.org'; + expect(urls.baseAppUrl(url)).toEqual(url); + }); + it('returns the url if it is relative', () => { + const url = '/edx.org'; + expect(urls.baseAppUrl(url)).toEqual( + `${configuration.LMS_BASE_URL}${url}`, + ); + }); + it('return null if url is null', () => { + expect(urls.baseAppUrl(null)).toEqual(null); + }); + }); + describe('learningMfeUrl', () => { + it('returns the url if it is not relative', () => { + const url = 'http://edx.org'; + expect(urls.learningMfeUrl(url)).toEqual(url); + }); + it('returns the url if it is relative', () => { + const url = '/edx.org'; + expect(urls.learningMfeUrl(url)).toEqual( + `${configuration.LEARNING_BASE_URL}${url}`, + ); + }); + it('return null if url is null', () => { + expect(urls.learningMfeUrl(null)).toEqual(null); + }); + }); +});