Fix isBeta challenges displaying without title when they should be hidden
This commit is contained in:
committed by
Berkeley Martinez
parent
e3eb02e9b1
commit
01291162ef
@ -10,12 +10,30 @@ export function filterComingSoonBetaChallenge(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function filterComingSoonBetaFromEntities(
|
export function filterComingSoonBetaFromEntities(
|
||||||
{ challenge: challengeMap, ...rest },
|
{ challenge: challengeMap, block: blockMap, ...rest },
|
||||||
isDev = false
|
isDev = false
|
||||||
) {
|
) {
|
||||||
const filter = filterComingSoonBetaChallenge.bind(null, isDev);
|
const filter = filterComingSoonBetaChallenge.bind(null, isDev);
|
||||||
return {
|
return {
|
||||||
...rest,
|
...rest,
|
||||||
|
block: Object.keys(blockMap)
|
||||||
|
.map(dashedName => {
|
||||||
|
const block = blockMap[dashedName];
|
||||||
|
|
||||||
|
const filteredChallenges = block.challenges
|
||||||
|
.map(dashedName => challengeMap[dashedName])
|
||||||
|
.filter(filter)
|
||||||
|
.map(challenge => challenge.dashedName);
|
||||||
|
|
||||||
|
return {
|
||||||
|
...block,
|
||||||
|
challenges: [ ...filteredChallenges ]
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.reduce((blockMap, block) => {
|
||||||
|
blockMap[block.dashedName] = block;
|
||||||
|
return blockMap;
|
||||||
|
}, {}),
|
||||||
challenge: Object.keys(challengeMap)
|
challenge: Object.keys(challengeMap)
|
||||||
.map(dashedName => challengeMap[dashedName])
|
.map(dashedName => challengeMap[dashedName])
|
||||||
.filter(filter)
|
.filter(filter)
|
||||||
|
@ -37,7 +37,7 @@ test.test('filterComingSoonBetaChallenge', t => {
|
|||||||
test.test('filterComingSoonBetaFromEntities', t => {
|
test.test('filterComingSoonBetaFromEntities', t => {
|
||||||
t.plan(2);
|
t.plan(2);
|
||||||
t.test('should filter isBeta|coming-soon by default', t => {
|
t.test('should filter isBeta|coming-soon by default', t => {
|
||||||
t.plan(2);
|
t.plan(4);
|
||||||
const normalChallenge = { dashedName: 'normal-challenge' };
|
const normalChallenge = { dashedName: 'normal-challenge' };
|
||||||
const entities = {
|
const entities = {
|
||||||
challenge: {
|
challenge: {
|
||||||
@ -48,8 +48,23 @@ test.test('filterComingSoonBetaFromEntities', t => {
|
|||||||
isBeta: true
|
isBeta: true
|
||||||
},
|
},
|
||||||
[normalChallenge.dashedName]: normalChallenge
|
[normalChallenge.dashedName]: normalChallenge
|
||||||
|
},
|
||||||
|
block: {
|
||||||
|
'coming-soon': {
|
||||||
|
dashedName: 'coming-soon',
|
||||||
|
challenges: ['coming-soon']
|
||||||
|
},
|
||||||
|
'is-beta': {
|
||||||
|
dashedName: 'is-beta',
|
||||||
|
challenges: ['is-beta']
|
||||||
|
},
|
||||||
|
normal: {
|
||||||
|
dashedName: 'normal',
|
||||||
|
challenges: [normalChallenge.dashedName]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const actual = filterComingSoonBetaFromEntities(entities);
|
const actual = filterComingSoonBetaFromEntities(entities);
|
||||||
t.isEqual(
|
t.isEqual(
|
||||||
Object.keys(actual.challenge).length,
|
Object.keys(actual.challenge).length,
|
||||||
@ -61,6 +76,23 @@ test.test('filterComingSoonBetaFromEntities', t => {
|
|||||||
normalChallenge,
|
normalChallenge,
|
||||||
'did not return the correct challenge'
|
'did not return the correct challenge'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const challengesFromBlocks = [];
|
||||||
|
Object.keys(actual.block)
|
||||||
|
.forEach(block => {
|
||||||
|
const challenges = actual.block[block].challenges;
|
||||||
|
challenges.forEach(challenge => challengesFromBlocks.push(challenge));
|
||||||
|
});
|
||||||
|
t.isEqual(
|
||||||
|
challengesFromBlocks.length,
|
||||||
|
1,
|
||||||
|
'did not filter the correct amount of challenges from blocks'
|
||||||
|
);
|
||||||
|
t.isEqual(
|
||||||
|
challengesFromBlocks[0],
|
||||||
|
normalChallenge.dashedName,
|
||||||
|
'did not return the correct challenge from blocks'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
t.test('should not filter isBeta|coming-soon when isDev', t => {
|
t.test('should not filter isBeta|coming-soon when isDev', t => {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
@ -80,6 +112,24 @@ test.test('filterComingSoonBetaFromEntities', t => {
|
|||||||
isBeta: true
|
isBeta: true
|
||||||
},
|
},
|
||||||
[normalChallenge.dashedName]: normalChallenge
|
[normalChallenge.dashedName]: normalChallenge
|
||||||
|
},
|
||||||
|
block: {
|
||||||
|
'coming-soon': {
|
||||||
|
dashedName: 'coming-soon',
|
||||||
|
challenges: ['coming-soon']
|
||||||
|
},
|
||||||
|
'is-beta': {
|
||||||
|
dashedName: 'is-beta',
|
||||||
|
challenges: ['is-beta']
|
||||||
|
},
|
||||||
|
'is-both': {
|
||||||
|
dashedName: 'is-both',
|
||||||
|
challenges: ['is-both']
|
||||||
|
},
|
||||||
|
normal: {
|
||||||
|
dashedName: 'normal',
|
||||||
|
challenges: [normalChallenge.dashedName]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const actual = filterComingSoonBetaFromEntities(entities, true);
|
const actual = filterComingSoonBetaFromEntities(entities, true);
|
||||||
@ -88,5 +138,15 @@ test.test('filterComingSoonBetaFromEntities', t => {
|
|||||||
4,
|
4,
|
||||||
'filtered challenges'
|
'filtered challenges'
|
||||||
);
|
);
|
||||||
|
let challengesFromBlocksCount = 0;
|
||||||
|
Object.keys(actual.block)
|
||||||
|
.forEach(block => {
|
||||||
|
challengesFromBlocksCount += actual.block[block].challenges.length;
|
||||||
|
});
|
||||||
|
t.isEqual(
|
||||||
|
challengesFromBlocksCount,
|
||||||
|
4,
|
||||||
|
'filtered challenges from blocks'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user