From 259b9f3d1f0b9840abc5bbba9257707f72f169d5 Mon Sep 17 00:00:00 2001 From: kenclary Date: Mon, 21 Aug 2023 16:57:08 -0700 Subject: [PATCH] fix: don't get returnUrl for v2 blocks. (#380) --- src/editors/data/redux/app/selectors.js | 9 ++++++--- src/editors/data/redux/app/selectors.test.js | 8 ++++++-- src/editors/data/services/cms/urls.js | 7 +++++-- src/editors/data/services/cms/urls.test.js | 10 +++++++++- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/editors/data/redux/app/selectors.js b/src/editors/data/redux/app/selectors.js index 7c6a99d40..1b248dbe6 100644 --- a/src/editors/data/redux/app/selectors.js +++ b/src/editors/data/redux/app/selectors.js @@ -26,9 +26,12 @@ export const simpleSelectors = { }; export const returnUrl = createSelector( - [module.simpleSelectors.unitUrl, module.simpleSelectors.studioEndpointUrl, module.simpleSelectors.learningContextId], - (unitUrl, studioEndpointUrl, learningContextId) => ( - urls.returnUrl({ studioEndpointUrl, unitUrl, learningContextId }) + [module.simpleSelectors.unitUrl, module.simpleSelectors.studioEndpointUrl, module.simpleSelectors.learningContextId, + module.simpleSelectors.blockId], + (unitUrl, studioEndpointUrl, learningContextId, blockId) => ( + urls.returnUrl({ + studioEndpointUrl, unitUrl, learningContextId, blockId, + }) ), ); diff --git a/src/editors/data/redux/app/selectors.test.js b/src/editors/data/redux/app/selectors.test.js index ac7cc400a..67b160802 100644 --- a/src/editors/data/redux/app/selectors.test.js +++ b/src/editors/data/redux/app/selectors.test.js @@ -58,6 +58,7 @@ describe('app selectors unit tests', () => { simpleSelectors.unitUrl, simpleSelectors.studioEndpointUrl, simpleSelectors.learningContextId, + simpleSelectors.blockId, ]); }); it('returns urls.returnUrl with the returnUrl', () => { @@ -65,10 +66,13 @@ describe('app selectors unit tests', () => { const studioEndpointUrl = 'baseURL'; const unitUrl = 'some unit url'; const learningContextId = 'some learning context'; + const blockId = 'block-v1 some v1 block id'; expect( - cb(unitUrl, studioEndpointUrl, learningContextId), + cb(unitUrl, studioEndpointUrl, learningContextId, blockId), ).toEqual( - urls.returnUrl({ unitUrl, studioEndpointUrl, learningContextId }), + urls.returnUrl({ + unitUrl, studioEndpointUrl, learningContextId, blockId, + }), ); }); }); diff --git a/src/editors/data/services/cms/urls.js b/src/editors/data/services/cms/urls.js index ad402b60d..087487894 100644 --- a/src/editors/data/services/cms/urls.js +++ b/src/editors/data/services/cms/urls.js @@ -6,7 +6,9 @@ export const unit = ({ studioEndpointUrl, unitUrl }) => ( `${studioEndpointUrl}/container/${unitUrl.data.ancestors[0]?.id}` ); -export const returnUrl = ({ studioEndpointUrl, unitUrl, learningContextId }) => { +export const returnUrl = ({ + studioEndpointUrl, unitUrl, learningContextId, blockId, +}) => { if (learningContextId && learningContextId.startsWith('library-v1')) { // when the learning context is a v1 library, return to the library page return libraryV1({ studioEndpointUrl, learningContextId }); @@ -19,7 +21,8 @@ export const returnUrl = ({ studioEndpointUrl, unitUrl, learningContextId }) => return ''; } // when the learning context is a course, return to the unit page - if (unitUrl) { + // only do this for v1 blocks + if (unitUrl && blockId.includes('block-v1')) { return unit({ studioEndpointUrl, unitUrl }); } return ''; diff --git a/src/editors/data/services/cms/urls.test.js b/src/editors/data/services/cms/urls.test.js index b1aacc287..f7945ad3d 100644 --- a/src/editors/data/services/cms/urls.test.js +++ b/src/editors/data/services/cms/urls.test.js @@ -56,9 +56,17 @@ describe('cms url methods', () => { .toEqual(''); }); it('returns url with studioEndpointUrl and unitUrl', () => { - expect(returnUrl({ studioEndpointUrl, unitUrl, learningContextId: courseId })) + expect(returnUrl({ + studioEndpointUrl, unitUrl, learningContextId: courseId, blockId, + })) .toEqual(`${studioEndpointUrl}/container/${unitUrl.data.ancestors[0].id}`); }); + it('returns blank url for v2 block', () => { + expect(returnUrl({ + studioEndpointUrl, unitUrl, learningContextId: courseId, blockId: v2BlockId, + })) + .toEqual(''); + }); it('throws error if no unit url', () => { expect(returnUrl({ studioEndpointUrl, unitUrl: null, learningContextId: courseId })) .toEqual('');