From b0ecd766e0754fbbe6e1d0bb445fc048b6b6347f Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Fri, 3 Jun 2022 07:17:35 +0200 Subject: [PATCH] fix: order entries in available-superblocks.json (#46274) --- .../build/build-external-curricula-data.ts | 31 +++++++++---------- tools/scripts/build/mobile-curriculum.test.ts | 15 +++++++-- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/tools/scripts/build/build-external-curricula-data.ts b/tools/scripts/build/build-external-curricula-data.ts index 2ffd7ef2f54..7afb4367d8b 100644 --- a/tools/scripts/build/build-external-curricula-data.ts +++ b/tools/scripts/build/build-external-curricula-data.ts @@ -23,22 +23,21 @@ interface Block { meta: Record; } -export const superBlockMobileAppOrder = { - 'responsive-web-design': { public: true }, - '2022/responsive-web-design': { public: false }, - 'javascript-algorithms-and-data-structures': { public: true }, - '2022/javascript-algorithms-and-data-structures': { public: false }, - 'front-end-development-libraries': { public: false }, - 'data-visualization': { public: false }, - 'back-end-development-and-apis': { public: false }, - 'quality-assurance': { public: false }, - 'scientific-computing-with-python': { public: false }, - 'data-analysis-with-python': { public: false }, - 'information-security': { public: false }, - 'machine-learning-with-python': { public: false }, - 'coding-interview-prep': { public: false }, - 'relational-database': { public: false } -}; +export const superBlockMobileAppOrder = [ + { dashedName: '2022/responsive-web-design', public: false }, + { dashedName: 'responsive-web-design', public: true }, + { dashedName: 'javascript-algorithms-and-data-structures', public: true }, + { dashedName: 'front-end-development-libraries', public: false }, + { dashedName: 'data-visualization', public: false }, + { dashedName: 'back-end-development-and-apis', public: false }, + { dashedName: 'quality-assurance', public: false }, + { dashedName: 'scientific-computing-with-python', public: false }, + { dashedName: 'data-analysis-with-python', public: false }, + { dashedName: 'information-security', public: false }, + { dashedName: 'machine-learning-with-python', public: false }, + { dashedName: 'coding-interview-prep', public: false }, + { dashedName: 'relational-database', public: false } +]; export function buildExtCurriculumData( ver: string, diff --git a/tools/scripts/build/mobile-curriculum.test.ts b/tools/scripts/build/mobile-curriculum.test.ts index 34530573a60..1427777c796 100644 --- a/tools/scripts/build/mobile-curriculum.test.ts +++ b/tools/scripts/build/mobile-curriculum.test.ts @@ -57,11 +57,20 @@ if (envData.clientLocale == 'english' && !envData.showUpcomingChanges) { }); test('All SuperBlocks should be present in the mobile SuperBlock object', () => { - expect(Object.keys(superBlockMobileAppOrder)).toEqual( - expect.arrayContaining(Object.values(SuperBlocks)) + const dashedNames = superBlockMobileAppOrder.map( + ({ dashedName }) => dashedName + ); + // TODO: this is a hack, we should have a single source of truth for the + // list of superblocks that are available. + const publicSuperBlockNames = Object.values(SuperBlocks).filter( + x => x !== '2022/javascript-algorithms-and-data-structures' + ); + + expect(dashedNames).toEqual( + expect.arrayContaining(publicSuperBlockNames) ); expect(Object.keys(superBlockMobileAppOrder)).toHaveLength( - Object.values(SuperBlocks).length + publicSuperBlockNames.length ); }); });