Skip to content

Commit

Permalink
fix(routerHelpers): dynamic route, handle additional directories (#609)
Browse files Browse the repository at this point in the history
  • Loading branch information
cdcabrera committed Apr 13, 2021
1 parent 1d0d9c1 commit 345fca7
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 39 deletions.
1 change: 1 addition & 0 deletions config/cspell.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"words": [
"alibaba",
"amet",
"appname",
"bindto",
"chartarea",
"cloudigrade",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,17 @@ exports[`RouterHelpers should return a generated baseName using NO path prefix:

exports[`RouterHelpers should return a generated baseName using NO path prefix: empty pathPrefix: app base name 1`] = `"/appName"`;

exports[`RouterHelpers should return a generated baseName using NO path prefix: root reference pathPrefix: app base name 1`] = `"/appName"`;
exports[`RouterHelpers should return a generated baseName using a beta path prefix: beta app base name 1`] = `"/beta/appName"`;

exports[`RouterHelpers should return a generated baseName using NO path prefix: undefined pathPrefix: app base name 1`] = `"/appName"`;
exports[`RouterHelpers should return a generated baseName using a beta path prefix: beta app lorem route name 1`] = `"/beta/appName"`;

exports[`RouterHelpers should return a generated baseName using a beta path prefix: app base name 1`] = `"/appName"`;
exports[`RouterHelpers should return a generated baseName using an insights path prefix: insights, app base name 1`] = `"/insights/appName"`;

exports[`RouterHelpers should return a generated baseName using a beta path prefix: beta app base name 1`] = `"/beta/appName"`;
exports[`RouterHelpers should return a generated baseName using an insights path prefix: insights, app lorem route name 1`] = `"/insights/appName"`;

exports[`RouterHelpers should return a generated baseName using a beta path prefix: beta app lorem route name 1`] = `"/beta/appName"`;
exports[`RouterHelpers should return a generated baseName using an insights path prefix: insights, beta app base name 1`] = `"/beta/insights/appName"`;

exports[`RouterHelpers should return a generated baseName using an insights path prefix: insights, beta app lorem route name 1`] = `"/beta/insights/appName"`;

exports[`RouterHelpers should return an error route: error route 1`] = `
Object {
Expand Down
48 changes: 29 additions & 19 deletions src/components/router/__tests__/routerHelpers.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,52 +29,62 @@ describe('RouterHelpers', () => {
expect(
dynamicBaseName({
pathName: '/appName',
pathPrefix: ''
appName: 'appName'
})
).toMatchSnapshot('empty pathPrefix: app base name');

expect(
dynamicBaseName({
pathName: '/appName'
pathName: '/appName/loremRoute',
appName: 'appName'
})
).toMatchSnapshot('undefined pathPrefix: app base name');
).toMatchSnapshot('app lorem route name');
});

it('should return a generated baseName using a beta path prefix', () => {
expect(
dynamicBaseName({
pathName: '/appName',
pathPrefix: '/'
pathName: '/beta/appName',
appName: 'appName'
})
).toMatchSnapshot('root reference pathPrefix: app base name');
).toMatchSnapshot('beta app base name');

expect(
dynamicBaseName({
pathName: '/appName/loremRoute',
pathPrefix: ''
pathName: '/beta/appName/loremRoute',
appName: 'appName'
})
).toMatchSnapshot('app lorem route name');
).toMatchSnapshot('beta app lorem route name');
});

it('should return a generated baseName using a beta path prefix', () => {
it('should return a generated baseName using an insights path prefix', () => {
expect(
dynamicBaseName({
pathName: '/appName',
pathPrefix: '/beta'
pathName: '/insights/appName',
appName: 'appName'
})
).toMatchSnapshot('app base name');
).toMatchSnapshot('insights, app base name');

expect(
dynamicBaseName({
pathName: '/beta/appName',
pathPrefix: '/beta'
pathName: '/beta/insights/appName',
appName: 'appName'
})
).toMatchSnapshot('beta app base name');
).toMatchSnapshot('insights, beta app base name');

expect(
dynamicBaseName({
pathName: '/beta/appName/loremRoute',
pathPrefix: '/beta'
pathName: '/insights/appName/loremRoute',
appName: 'appName'
})
).toMatchSnapshot('beta app lorem route name');
).toMatchSnapshot('insights, app lorem route name');

expect(
dynamicBaseName({
pathName: '/beta/insights/appName/loremRoute',
appName: 'appName'
})
).toMatchSnapshot('insights, beta app lorem route name');
});

it('should return an error route', () => {
Expand Down
22 changes: 7 additions & 15 deletions src/components/router/routerHelpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,24 @@ import { helpers } from '../../common/helpers';
import { routes, navigation } from './routerConfig';

/**
* Return an assumed dynamic route baseName directory
* based on a predictable platform directory depth of
* /[OPTIONAL]/[environment]/[APP NAME]
* Return an assumed route baseName directory based on existing app name.
* App name is defined in dotenv and package.json/insights.appname
* [environment]/[OPTIONAL]/[OPTIONAL]/[APP NAME]
*
* @param {object} params
* @param {string} params.pathName
* @param {string} params.pathPrefix
* @param {string} params.appName
* @returns {string}
*/
const dynamicBaseName = ({ pathName, pathPrefix }) => {
const path = pathName.split('/');
path.shift();
const pathSlice = pathPrefix && new RegExp(path[0]).test(pathPrefix) ? 2 : 1;

return `/${path.slice(0, pathSlice).join('/')}`;
};
const dynamicBaseName = ({ pathName = window.location.pathname, appName = helpers.UI_NAME } = {}) =>
`${pathName.split(appName)[0]}${appName}`;

/**
* The app baseName.
*
* @type {string}
*/
const baseName =
(helpers.TEST_MODE && '/') ||
(helpers.DEV_MODE && '/') ||
dynamicBaseName({ pathName: window.location.pathname, pathPrefix: helpers.UI_DEPLOY_PATH_PREFIX });
const baseName = (helpers.TEST_MODE && '/') || (helpers.DEV_MODE && '/') || dynamicBaseName();

/**
* The first error route.
Expand Down

0 comments on commit 345fca7

Please sign in to comment.