fix: source certificates into Gatsby (#39648)

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Shaun Hamilton <51722130+Sky020@users.noreply.github.com>
This commit is contained in:
Oliver Eyton-Williams
2020-09-24 12:34:35 +02:00
committed by GitHub
parent f132f5157c
commit 4b14f9297b
4 changed files with 23 additions and 9 deletions

View File

@ -1,9 +1,11 @@
const crypto = require('crypto');
function createChallengeNode(challenge, reporter) {
// challengeType 11 is for video challenges (they only have instructions)
// challengeType 7 is for certificates (they only have tests)
if (
typeof challenge.description[0] !== 'string' &&
challenge.challengeType !== 11
(challenge.challengeType !== 11 && challenge.challengeType !== 7)
) {
reporter.warn(`
@ -17,7 +19,7 @@ function createChallengeNode(challenge, reporter) {
.digest('hex');
const internal = {
contentDigest,
type: 'ChallengeNode'
type: challenge.challengeType === 7 ? 'CertificateNode' : 'ChallengeNode'
};
/* eslint-disable prefer-object-spread/prefer-object-spread */
@ -26,13 +28,13 @@ function createChallengeNode(challenge, reporter) {
Object.assign(
{},
{
id: challenge.id + ' >>>> ChallengeNode',
children: [],
parent: null,
internal,
sourceInstanceName: 'challenge'
},
challenge
challenge,
{ id: challenge.id + internal.type }
)
)
);

View File

@ -69,7 +69,6 @@ File changed at ${filePath}, replacing challengeNode id ${challenge.id}
}
function createVisibleChallenge(challenge) {
if (challenge.superBlock.toLowerCase() === 'certificates') return;
createNode(createChallengeNode(challenge, reporter));
}

View File

@ -76,9 +76,6 @@ exports.createChallengePages = createPage => ({ node }, index, thisArray) => {
} = node;
// TODO: challengeType === 7 and isPrivate are the same, right? If so, we
// should remove one of them.
if (challengeType === 7) {
return null;
}
return createPage({
path: slug,

View File

@ -7,6 +7,19 @@ const selectors = {
landingPageImage: '.landing-page-image'
};
const certifications = [
'Responsive Web Design',
'JavaScript Algorithms and Data Structures',
'Front End Libraries',
'Data Visualization',
'APIs and Microservices',
'Quality Assurance',
'Scientific Computing with Python',
'Data Analysis with Python',
'Information Security',
'Machine Learning with Python'
];
describe('Landing page', () => {
it('Should render', () => {
cy.visit('/');
@ -50,11 +63,14 @@ describe('Landing page', () => {
.should('not.be.visible');
});
it('Has 10 certifications', function() {
it('Has links to all the certifications', function() {
cy.get(selectors.certifications)
.children()
.its('length')
.should('eq', 10);
cy.wrap(certifications).each(cert => {
cy.get(selectors.certifications).contains(cert);
});
});
it('Has 3 testimonial cards', function() {