refactor: stop spreading challenge over the node (#44499)
* refactor: stop spreading challenge over the node Instead of creating a Gatsby node with id of challenge.id, we create a single node field that has all the challenge data. While this makes the GraphQL queries more verbose, it means we're free to create multiple nodes with the same challenge.id. * test: update time-line test for new GQL schema * test: update mocks with new GQL schema
This commit is contained in:
committed by
GitHub
parent
755f27093c
commit
3b560deab6
@ -1,4 +1,5 @@
|
||||
const crypto = require('crypto');
|
||||
const { blockNameify } = require('../../../utils/block-nameify');
|
||||
|
||||
function createChallengeNode(challenge, reporter) {
|
||||
// challengeType 11 is for video challenges (they only have instructions)
|
||||
@ -31,6 +32,17 @@ function createChallengeNode(challenge, reporter) {
|
||||
type: challenge.challengeType === 7 ? 'CertificateNode' : 'ChallengeNode'
|
||||
};
|
||||
|
||||
if (internal.type === 'ChallengeNode') {
|
||||
const { tests = [], block, dashedName, superBlock } = challenge;
|
||||
const slug = `/learn/${superBlock}/${block}/${dashedName}`;
|
||||
|
||||
challenge.fields = {
|
||||
slug,
|
||||
blockName: blockNameify(block),
|
||||
tests
|
||||
};
|
||||
}
|
||||
|
||||
return JSON.parse(
|
||||
JSON.stringify(
|
||||
Object.assign(
|
||||
@ -41,7 +53,8 @@ function createChallengeNode(challenge, reporter) {
|
||||
internal,
|
||||
sourceInstanceName: 'challenge'
|
||||
},
|
||||
challenge
|
||||
{ challenge },
|
||||
{ id: crypto.randomUUID() }
|
||||
)
|
||||
)
|
||||
);
|
||||
|
Reference in New Issue
Block a user