Skip to content

Commit

Permalink
Merge cabfe12 into fe7961e
Browse files Browse the repository at this point in the history
  • Loading branch information
MonkeyDo committed Mar 3, 2020
2 parents fe7961e + cabfe12 commit bbbfa7f
Show file tree
Hide file tree
Showing 6 changed files with 114 additions and 22 deletions.
2 changes: 1 addition & 1 deletion src/server/routes/entity/author.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ function authorToFormState(author) {
language: languageId
})) : [];

const defaultAliasIndex = entityRoutes.getDefaultAliasIndex(aliases);
const defaultAliasIndex = entityRoutes.getDefaultAliasIndex(author.aliasSet);
const defaultAliasList = aliases.splice(defaultAliasIndex, 1);

const aliasEditor = {};
Expand Down
8 changes: 1 addition & 7 deletions src/server/routes/entity/edition-group.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,6 @@ router.get(
}
);


function getDefaultAliasIndex(aliases) {
const index = aliases.findIndex((alias) => alias.default);
return index > 0 ? index : 0;
}

function editionGroupToFormState(editionGroup) {
/** The front-end expects a language id rather than the language object. */
const aliases = editionGroup.aliasSet ?
Expand All @@ -122,7 +116,7 @@ function editionGroupToFormState(editionGroup) {
language: languageId
})) : [];

const defaultAliasIndex = getDefaultAliasIndex(aliases);
const defaultAliasIndex = entityRoutes.getDefaultAliasIndex(editionGroup.aliasSet);
const defaultAliasList = aliases.splice(defaultAliasIndex, 1);

const aliasEditor = {};
Expand Down
7 changes: 1 addition & 6 deletions src/server/routes/entity/edition.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,6 @@ router.get(
);


function getDefaultAliasIndex(aliases) {
const index = aliases.findIndex((alias) => alias.default);
return index > 0 ? index : 0;
}

function editionToFormState(edition) {
/** The front-end expects a language id rather than the language object. */
const aliases = edition.aliasSet ?
Expand All @@ -213,7 +208,7 @@ function editionToFormState(edition) {
language: languageId
})) : [];

const defaultAliasIndex = getDefaultAliasIndex(aliases);
const defaultAliasIndex = entityRoutes.getDefaultAliasIndex(edition.aliasSet);
const defaultAliasList = aliases.splice(defaultAliasIndex, 1);

const aliasEditor = {};
Expand Down
30 changes: 28 additions & 2 deletions src/server/routes/entity/entity.js
Original file line number Diff line number Diff line change
Expand Up @@ -847,8 +847,34 @@ export function constructRelationships(relationshipSection) {
);
}

export function getDefaultAliasIndex(aliases) {
const index = aliases.findIndex((alias) => alias.default);
/**
* Returns the index of the default alias if defined in the aliasSet.
* If there is no defaultAliasId, return the first alias where default = true.
* Returns null if there are no aliases in the set.
* @param {Object} aliasSet - The entity's aliasSet returned by the ORM
* @param {Object[]} aliasSet.aliases - The array of aliases contained in the set
* @param {string} aliasSet.defaultAliasId - The id of the set's default alias
* @returns {?number} The index of the default alias, or 0; returns null if 0 aliases in set
*/
export function getDefaultAliasIndex(aliasSet) {
if (_.isNil(aliasSet)) {
return null;
}
const {aliases, defaultAliasId} = aliasSet;
if (!aliases || !aliases.length) {
return null;
}
let index;
if (!_.isNil(defaultAliasId) && isFinite(defaultAliasId)) {
let defaultAliasIdNumber = defaultAliasId;
if (_.isString(defaultAliasId)) {
defaultAliasIdNumber = Number(defaultAliasId);
}
index = aliases.findIndex((alias) => alias.id === defaultAliasIdNumber);
}
else {
index = aliases.findIndex((alias) => alias.default);
}
return index > 0 ? index : 0;
}

Expand Down
7 changes: 1 addition & 6 deletions src/server/routes/entity/work.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,6 @@ router.get(
}
);

function getDefaultAliasIndex(aliases) {
const index = aliases.findIndex((alias) => alias.default);
return index > 0 ? index : 0;
}

function workToFormState(work) {
/** The front-end expects a language id rather than the language object. */
const aliases = work.aliasSet ?
Expand All @@ -166,7 +161,7 @@ function workToFormState(work) {
language: languageId
})) : [];

const defaultAliasIndex = getDefaultAliasIndex(aliases);
const defaultAliasIndex = entityRoutes.getDefaultAliasIndex(work.aliasSet);
const defaultAliasList = aliases.splice(defaultAliasIndex, 1);

const aliasEditor = {};
Expand Down
82 changes: 82 additions & 0 deletions test/src/server/routes/entity/entity.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import chai from 'chai';
import {getDefaultAliasIndex} from '../../../../../src/server/routes/entity/entity';


const {expect} = chai;

describe('getDefaultAliasIndex', () => {
const defaultAlias = {
default: true,
id: 33,
name: 'Bob'
};
const randomAliases = [
{
default: false,
id: 1,
name: 'Bob'
},
{
default: false,
id: 2,
name: 'John'
},
{
default: false,
id: 100,
name: 'Fnord'
}
];

it('should return null if there is not aliasSet', () => {
expect(getDefaultAliasIndex()).to.be.null;
expect(getDefaultAliasIndex(null)).to.be.null;
// eslint-disable-next-line no-undefined
expect(getDefaultAliasIndex(undefined)).to.be.null;
});

it('should return null if there are no aliases in the aliasSet', () => {
const aliasSet = {
aliases: null
};
expect(getDefaultAliasIndex(aliasSet)).to.be.null;
aliasSet.aliases = [];
expect(getDefaultAliasIndex(aliasSet)).to.be.null;
});

it('should return 0 if there is no defaultAliasId and no alias marked as default', () => {
const aliasSet = {
aliases: randomAliases,
defaultAliasId: null
};
expect(getDefaultAliasIndex(aliasSet)).to.equal(0);
});

it('should return the index of the first alias marked as default if there is no defaultAliasId', () => {
const aliasSet = {
aliases: [
randomAliases[0],
randomAliases[1],
defaultAlias,
randomAliases[2],
defaultAlias
],
defaultAliasId: null
};
expect(getDefaultAliasIndex(aliasSet)).to.equal(2);
});
it("should return the index of the alias matching the set's defaultAliasId", () => {
const aliasSet = {
aliases: [...randomAliases, defaultAlias],
defaultAliasId: 100
};
expect(getDefaultAliasIndex(aliasSet)).to.equal(2);
});
it("should return the index of the alias matching the set's defaultAliasId if it is a string", () => {
const aliasSet = {
aliases: [...randomAliases, defaultAlias],
defaultAliasId: '100'
};
expect(getDefaultAliasIndex(aliasSet)).to.equal(2);
});
});

0 comments on commit bbbfa7f

Please sign in to comment.