153 lines
4.0 KiB
JavaScript
153 lines
4.0 KiB
JavaScript
import test from 'tape';
|
|
import {
|
|
filterComingSoonBetaChallenge,
|
|
filterComingSoonBetaFromEntities
|
|
} from './utils.js';
|
|
|
|
|
|
test.test('filterComingSoonBetaChallenge', t => {
|
|
t.plan(4);
|
|
t.test('should return true when not coming-soon/beta', t => {
|
|
let isDev;
|
|
t.ok(filterComingSoonBetaChallenge(isDev, {}));
|
|
t.ok(filterComingSoonBetaChallenge(true, {}));
|
|
t.end();
|
|
});
|
|
t.test('should return false when isComingSoon', t => {
|
|
let isDev;
|
|
t.notOk(filterComingSoonBetaChallenge(isDev, { isComingSoon: true }));
|
|
t.end();
|
|
});
|
|
t.test('should return false when isBeta', t => {
|
|
let isDev;
|
|
t.notOk(filterComingSoonBetaChallenge(isDev, { isBeta: true }));
|
|
t.end();
|
|
});
|
|
t.test('should always return true when in dev', t => {
|
|
let isDev = true;
|
|
t.ok(filterComingSoonBetaChallenge(isDev, { isBeta: true }));
|
|
t.ok(filterComingSoonBetaChallenge(isDev, { isComingSoon: true }));
|
|
t.ok(filterComingSoonBetaChallenge(
|
|
isDev,
|
|
{ isBeta: true, isCompleted: true }
|
|
));
|
|
t.end();
|
|
});
|
|
});
|
|
test.test('filterComingSoonBetaFromEntities', t => {
|
|
t.plan(2);
|
|
t.test('should filter isBeta|coming-soon by default', t => {
|
|
t.plan(4);
|
|
const normalChallenge = { dashedName: 'normal-challenge' };
|
|
const entities = {
|
|
challenge: {
|
|
'coming-soon': {
|
|
isComingSoon: true
|
|
},
|
|
'is-beta': {
|
|
isBeta: true
|
|
},
|
|
[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);
|
|
t.isEqual(
|
|
Object.keys(actual.challenge).length,
|
|
1,
|
|
'did not filter the correct amount of challenges'
|
|
);
|
|
t.isEqual(
|
|
actual.challenge[normalChallenge.dashedName],
|
|
normalChallenge,
|
|
'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.plan(2);
|
|
const normalChallenge = { dashedName: 'normal-challenge' };
|
|
const entities = {
|
|
challenge: {
|
|
'coming-soon': {
|
|
dashedName: 'coming-soon',
|
|
isComingSoon: true
|
|
},
|
|
'is-beta': {
|
|
dashedName: 'is-beta',
|
|
isBeta: true
|
|
},
|
|
'is-both': {
|
|
dashedName: 'is-both',
|
|
isBeta: true
|
|
},
|
|
[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);
|
|
t.isEqual(
|
|
Object.keys(actual.challenge).length,
|
|
4,
|
|
'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'
|
|
);
|
|
});
|
|
});
|