Skip to content

Commit

Permalink
Merge d5b43ca into b58f2e7
Browse files Browse the repository at this point in the history
  • Loading branch information
Easybuoy committed Dec 5, 2019
2 parents b58f2e7 + d5b43ca commit 6c28f55
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 28 deletions.
4 changes: 2 additions & 2 deletions src/components/Characters/CharacterList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ export const CharacterList = ({ movie, characters, loading }) => {
<Character
key={character.name}
name={character.name}
gender={formatGender(character.gender)}
gender={formatGender(character.gender, stateCharacters)}
height={formatHeight(character.height)}
/>
);
Expand All @@ -205,7 +205,7 @@ export const CharacterList = ({ movie, characters, loading }) => {
<Character
key={character.name}
name={character.name}
gender={formatGender(character.gender)}
gender={formatGender(character.gender, characters)}
height={formatHeight(character.height)}
/>
);
Expand Down
35 changes: 13 additions & 22 deletions src/utils/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
export const formatGender = gender => {
const genderLookup = {
male: 'M',
female: 'F',
hermaphrodite: 'H',
'n/a': 'N/A',
none: 'N'
};
export const formatGender = (gender, characters = []) => {
let genderLookup = {};
characters.forEach(character => {
if (!genderLookup[character.gender]) {
genderLookup[character.gender] = character.gender[0].toUpperCase();
}
});

return genderLookup[gender];
};

Expand Down Expand Up @@ -59,20 +59,11 @@ export const sortGender = (array, order) => {
};

export const filterGender = (array, condition) => {
switch (condition) {
case 'MALE':
return array.filter(word => word.gender === 'male');
case 'FEMALE':
return array.filter(word => word.gender === 'female');
case 'HERMAPHRODITE':
return array.filter(word => word.gender === 'hermaphrodite');
case 'N/A':
return array.filter(word => word.gender === 'n/a');
case 'NONE':
return array.filter(word => word.gender === 'none');
default:
return array;
if (condition === 'ALL') {
return array;
}

return array.filter(word => word.gender === condition.toLowerCase());
};

export const sortName = (array, order) => {
Expand Down Expand Up @@ -151,7 +142,7 @@ export const requestFromAPI = async (url, method = 'GET') => {

export const genderFilterFromCharacters = (characters = []) => {
let filter = [{ title: 'ALL' }];

characters.forEach(character => {
const existingFilter = filter
.map(e => {
Expand Down
11 changes: 7 additions & 4 deletions src/utils/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,20 @@ const { getMovieDataMock } = mock;

describe('Util', () => {
it('test male case Format Gender', () => {
const response = formatGender('male');
const testArray = [{ gender: 'male' }, { gender: 'female' }];
const response = formatGender('male', testArray);
expect(response).toEqual('M');
});

it('test female case for Format Gender', () => {
const response = formatGender('female');
const testArray = [{ gender: 'male' }, { gender: 'female' }];
const response = formatGender('female', testArray);
expect(response).toEqual('F');
});

it('test hermaphrodite case for Format Gender', () => {
const response = formatGender('hermaphrodite');
const testArray = [{ gender: 'hermaphrodite' }, { gender: 'female' }];
const response = formatGender('hermaphrodite', testArray);
expect(response).toEqual('H');
});

Expand Down Expand Up @@ -138,7 +141,7 @@ describe('Util', () => {
{ name: 'John', height: 20, gender: 'male' },
{ name: 'Ezekiel', height: 10, gender: 'female' }
];
const response = filterGender(testArray, 'asc');
const response = filterGender(testArray, 'ALL');
expect(response).toEqual([
{ name: 'John', height: 20, gender: 'male' },
{ name: 'Ezekiel', height: 10, gender: 'female' }
Expand Down

0 comments on commit 6c28f55

Please sign in to comment.