diff --git a/tools/challenge-helper-scripts/create-language-block.ts b/tools/challenge-helper-scripts/create-language-block.ts index 2777cadd15b..f93e100d470 100644 --- a/tools/challenge-helper-scripts/create-language-block.ts +++ b/tools/challenge-helper-scripts/create-language-block.ts @@ -54,7 +54,7 @@ async function createLanguageBlock( const superblockFilename = ( superBlockToFilename as Record )[superBlock]; - void updateSimpleSuperblockStructure(block, { order: 0 }, superblockFilename); + void updateSimpleSuperblockStructure(block, {}, superblockFilename); // TODO: remove once we stop relying on markdown in the client. await createIntroMD(superBlock, block, title); } diff --git a/tools/challenge-helper-scripts/helpers/create-project.test.ts b/tools/challenge-helper-scripts/helpers/create-project.test.ts index 835481fe03c..f2941e39725 100644 --- a/tools/challenge-helper-scripts/helpers/create-project.test.ts +++ b/tools/challenge-helper-scripts/helpers/create-project.test.ts @@ -70,6 +70,26 @@ describe('updateSimpleSuperblockStructure', () => { } ); }); + + it('should insert the block into the blocks array at the end when no order is given', async () => { + const existingBlocks = ['block1', 'block2']; + const superblockFilename = 'test-superblock'; + const newBlock = 'block3'; + + mockGetSuperblockStructure.mockReturnValue({ + blocks: existingBlocks + }); + + await updateSimpleSuperblockStructure(newBlock, {}, superblockFilename); + + expect(mockGetSuperblockStructure).toHaveBeenCalledWith(superblockFilename); + expect(mockWriteSuperblockStructure).toHaveBeenCalledWith( + superblockFilename, + { + blocks: ['block1', 'block2', 'block3'] + } + ); + }); }); describe('updateChapterModuleSuperblockStructure', () => { diff --git a/tools/challenge-helper-scripts/helpers/create-project.ts b/tools/challenge-helper-scripts/helpers/create-project.ts index de608cdc754..10be07828da 100644 --- a/tools/challenge-helper-scripts/helpers/create-project.ts +++ b/tools/challenge-helper-scripts/helpers/create-project.ts @@ -8,14 +8,20 @@ import { insertInto } from './utils'; export async function updateSimpleSuperblockStructure( block: string, - position: { order: number }, + position: { order?: number }, superblockFilename: string ) { const existing = getSuperblockStructure(superblockFilename) as { blocks: string[]; }; + + const order = + typeof position.order === 'number' + ? position.order + : existing.blocks.length; + const updated = { - blocks: insertInto(existing.blocks, position.order, block) + blocks: insertInto(existing.blocks, order, block) }; await writeSuperblockStructure(superblockFilename, updated); }