refactor: rename superblocks.ts to curriculum (#55624)

This commit is contained in:
Oliver Eyton-Williams
2024-07-23 18:04:02 +02:00
committed by GitHub
parent 6d1debec1c
commit 1e25cfdf83
37 changed files with 43 additions and 44 deletions

View File

@@ -1,7 +1,7 @@
import fs from 'fs';
import { setup } from 'jest-json-schema-extended';
import { availableLangs, LangNames, LangCodes } from '../../shared/config/i18n';
import { SuperBlocks } from '../../shared/config/superblocks';
import { SuperBlocks } from '../../shared/config/curriculum';
import intro from './locales/english/intro.json';
setup();

View File

@@ -1,5 +1,5 @@
import React from 'react';
import { SuperBlocks } from '../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../shared/config/curriculum';
import APIIcon from './api';
import D3Icon from './d3';
import DatabaseIcon from './database';

View File

@@ -7,7 +7,7 @@ import {
SuperBlockStages,
SuperBlocks,
superBlockOrder
} from '../../../../shared/config/superblocks';
} from '../../../../shared/config/curriculum';
import { SuperBlockIcon } from '../../assets/icons/superblock-icon';
import LinkButton from '../../assets/icons/link-button';
import { Spacer, ButtonLink } from '../helpers';

View File

@@ -2,7 +2,7 @@ import React from 'react';
import { useTranslation } from 'react-i18next';
import { Alert } from '@freecodecamp/ui';
import { useFeatureValue } from '@growthbook/growthbook-react';
import { SuperBlocks } from '../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../shared/config/curriculum';
import { Link } from '../helpers';
type GitpodNoteProps = {

View File

@@ -18,7 +18,7 @@ import ExamResultsModal from '../../SolutionViewer/exam-results-modal';
import { openModal } from '../../../templates/Challenges/redux/actions';
import { Link, FullWidthRow, Spacer } from '../../helpers';
import { SolutionDisplayWidget } from '../../solution-display-widget';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import TimelinePagination from './timeline-pagination';
const SolutionViewer = Loadable(

View File

@@ -2,7 +2,7 @@ import { useStaticQuery, graphql } from 'gatsby';
import React from 'react';
import Helmet from 'react-helmet';
import { useTranslation } from 'react-i18next';
import { SuperBlocks } from '../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../shared/config/curriculum';
interface SEOProps {
title?: string;

View File

@@ -1,5 +1,5 @@
import { HandlerProps } from 'react-reflex';
import { SuperBlocks } from '../../../shared/config/superblocks';
import { SuperBlocks } from '../../../shared/config/curriculum';
import { Themes } from '../components/settings/theme';
import { type CertTitle } from '../../config/cert-and-project-map';

View File

@@ -45,7 +45,7 @@ import {
import ProjectToolPanel from '../projects/tool-panel';
import SolutionForm from '../projects/solution-form';
import { FlashMessages } from '../../../components/Flash/redux/flash-messages';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import { CodeAllyDown } from '../../../components/growth-book/codeally-down';
import { postUserToken } from '../../../utils/ajax';

View File

@@ -3,7 +3,7 @@ import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { Test } from '../../../redux/prop-types';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import { initializeMathJax } from '../../../utils/math-jax';
import { challengeTestsSelector } from '../redux/selectors';
import TestSuite from './test-suite';

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { render, screen } from '@testing-library/react';
import { Provider } from 'react-redux';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import { createStore } from '../../../redux/create-store';
import {
ChallengeFiles,

View File

@@ -6,7 +6,7 @@ import ScrollableAnchor from 'react-scrollable-anchor';
import { bindActionCreators, Dispatch } from 'redux';
import { createSelector } from 'reselect';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import envData from '../../../../config/env.json';
import { isAuditedSuperBlock } from '../../../../../shared/utils/is-audited';
import Caret from '../../../assets/icons/caret';

View File

@@ -8,7 +8,7 @@ import {
certSlugTypeMap,
superBlockCertTypeMap
} from '../../../../../shared/config/certification-settings';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import {
isSignedInSelector,

View File

@@ -5,7 +5,7 @@ import { withTranslation, useTranslation } from 'react-i18next';
import GreenNotCompleted from '../../../assets/icons/green-not-completed';
import GreenPass from '../../../assets/icons/green-pass';
import { ChallengeWithCompletedNode } from '../../../redux/prop-types';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import { challengeTypes } from '../../../../../shared/config/challenge-types';
import { ButtonLink } from '../../../components/helpers/button-link';

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import { isAuditedSuperBlock } from '../../../../../shared/utils/is-audited';
import { Link, Spacer } from '../../../components/helpers';

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Alert } from '@freecodecamp/ui';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import {
isOldRespCert,
isRelationalDbCert,

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Alert } from '@freecodecamp/ui';
import { SuperBlocks } from '../../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../../shared/config/curriculum';
import { SuperBlockIcon } from '../../../assets/icons/superblock-icon';
import { Spacer, Link } from '../../../components/helpers';

View File

@@ -10,7 +10,7 @@ import { bindActionCreators, Dispatch } from 'redux';
import { createSelector } from 'reselect';
import { Container, Col, Row } from '@freecodecamp/ui';
import { SuperBlocks } from '../../../../shared/config/superblocks';
import { SuperBlocks } from '../../../../shared/config/curriculum';
import { getSuperBlockTitleForMap } from '../../utils/superblock-map-titles';
import DonateModal from '../../components/Donation/donation-modal';
import Login from '../../components/Header/components/login';

View File

@@ -1,5 +1,5 @@
import { challengeTypes } from '../../../shared/config/challenge-types';
import { SuperBlocks } from '../../../shared/config/superblocks';
import { SuperBlocks } from '../../../shared/config/curriculum';
// Show a grid layout on the superblock level

View File

@@ -1,4 +1,4 @@
import { SuperBlocks } from '../../../shared/config/superblocks';
import { SuperBlocks } from '../../../shared/config/curriculum';
export function isOldRespCert(superBlock: string): boolean {
return superBlock === String(SuperBlocks.RespWebDesign);

View File

@@ -1,5 +1,5 @@
import i18next from 'i18next';
import { SuperBlocks } from '../../../shared/config/superblocks';
import { SuperBlocks } from '../../../shared/config/curriculum';
// these are keys from i18n translations.json files
enum SuperBlockI18nKeys {

View File

@@ -2,7 +2,7 @@ const path = require('path');
const {
createFlatSuperBlockMap,
SuperBlocks
} = require('../shared/config/superblocks');
} = require('../shared/config/curriculum');
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });

View File

@@ -4,7 +4,7 @@
import fs from 'fs';
import path from 'path';
import { config } from 'dotenv';
import { SuperBlocks } from '../shared/config/superblocks';
import { SuperBlocks } from '../shared/config/curriculum';
import { createSuperOrder, getSuperOrder, getSuperBlockFromDir } from './utils';
config({ path: path.resolve(__dirname, '../.env') });
@@ -70,12 +70,12 @@ describe('createSuperOrder', () => {
});
describe('getSuperOrder', () => {
it('returns a number for valid superblocks', () => {
it('returns a number for valid curriculum', () => {
expect.assertions(1);
expect(typeof getSuperOrder('responsive-web-design')).toBe('number');
});
it('throws for unknown superblocks', () => {
it('throws for unknown curriculum', () => {
expect.assertions(4);
expect(() => getSuperOrder()).toThrow();
expect(() => getSuperOrder(null)).toThrow();
@@ -88,7 +88,7 @@ describe('getSuperOrder', () => {
expect(() => getSuperOrder('certifications')).toThrow();
});
it.skip('returns unique numbers for all current superblocks', () => {
it.skip('returns unique numbers for all current curriculum', () => {
if (
process.env.SHOW_NEW_CURRICULUM !== 'true' &&
process.env.SHOW_UPCOMING_CHANGES !== 'true'

View File

@@ -1,7 +1,7 @@
import { expect, test, type Page } from '@playwright/test';
import intro from '../client/i18n/locales/english/intro.json';
import translations from '../client/i18n/locales/english/translations.json';
import { SuperBlocks } from '../shared/config/superblocks';
import { SuperBlocks } from '../shared/config/curriculum';
const landingPageElements = {
heading: 'landing-header',
@@ -150,7 +150,7 @@ test('Testimonial endorser people have images, occupation, location and testimon
}
});
test('Has links to all superblocks', async () => {
test('Has links to all curriculum', async () => {
const curriculumBtns = page.getByTestId(landingPageElements.curriculumBtns);
await expect(curriculumBtns).toHaveCount(21);
for (let index = 0; index < superBlocks.length; index++) {

View File

@@ -2,10 +2,7 @@ import { test, expect } from '@playwright/test';
import translations from '../client/i18n/locales/english/translations.json';
import intro from '../client/i18n/locales/english/intro.json';
import {
SuperBlockStages,
superBlockOrder
} from '../shared/config/superblocks';
import { SuperBlockStages, superBlockOrder } from '../shared/config/curriculum';
test.beforeEach(async ({ page }) => {
await page.goto('/learn');

View File

@@ -1,6 +1,6 @@
import { execSync } from 'child_process';
import { test, expect, Page } from '@playwright/test';
import { SuperBlocks } from '../shared/config/superblocks';
import { SuperBlocks } from '../shared/config/curriculum';
import tributePageHtml from './fixtures/tribute-page-html.json';
import tributePageCss from './fixtures/tribute-page-css.json';
import curriculum from './fixtures/js-ads-projects.json';

View File

@@ -1,5 +1,5 @@
import { test, expect } from '@playwright/test';
import { SuperBlocks } from '../shared/config/superblocks';
import { SuperBlocks } from '../shared/config/curriculum';
import type { ListItem } from '../client/src/components/seo/';
import metaTags from '../client/i18n/locales/english/meta-tags.json';

View File

@@ -1,4 +1,4 @@
import { SuperBlocks } from '../../shared/config/superblocks';
import { SuperBlocks } from '../../shared/config/curriculum';
/**
* Certifications are not equivalent to superblocks. Each superblock corresponds

View File

@@ -7,7 +7,7 @@ import {
createSuperBlockMap,
createFlatSuperBlockMap,
getAuditedSuperBlocks
} from './superblocks';
} from './curriculum';
describe('superBlockOrder', () => {
it('should contain all SuperBlocks', () => {

View File

@@ -1,4 +1,6 @@
import { Languages } from '../config/i18n';
// TODO: eventually this should all flow from the curriculum service, since it
// defines the top-level structure of the curriculum.
import { Languages } from './i18n';
// all superblocks
export enum SuperBlocks {

View File

@@ -1,7 +1,7 @@
import {
type SuperBlocks,
getAuditedSuperBlocks
} from '../../shared/config/superblocks';
} from '../../shared/config/curriculum';
export function isAuditedSuperBlock(
language: string,

View File

@@ -12,7 +12,7 @@ import { getChallengesForLang } from '../../curriculum/get-challenges';
import {
SuperBlocks,
getAuditedSuperBlocks
} from '../../shared/config/superblocks';
} from '../../shared/config/curriculum';
// TODO: re-organise the types to a common 'types' folder that can be shared
// between the workspaces so we don't have to declare ChallengeNode here and in

View File

@@ -1,5 +1,5 @@
import fs from 'fs';
import { SuperBlocks } from '../../shared/config/superblocks';
import { SuperBlocks } from '../../shared/config/curriculum';
import { challengeTypes } from '../../shared/config/challenge-types';
import { getProjectPath } from './helpers/get-project-info';
import { getMetaData, updateMetaData } from './helpers/project-metadata';

View File

@@ -5,7 +5,7 @@ import { prompt } from 'inquirer';
import { format } from 'prettier';
import ObjectID from 'bson-objectid';
import { SuperBlocks } from '../../shared/config/superblocks';
import { SuperBlocks } from '../../shared/config/curriculum';
import { createStepFile, validateBlockName } from './utils';
import { getSuperBlockSubPath } from './fs-utils';
import { Meta } from './helpers/project-metadata';

View File

@@ -1,6 +1,6 @@
import fs from 'fs/promises';
import path from 'path';
import { SuperBlocks } from '../../shared/config/superblocks';
import { SuperBlocks } from '../../shared/config/curriculum';
import { getSuperBlockSubPath } from './fs-utils';
describe('getSuperBlockSubPath', () => {

View File

@@ -1,4 +1,4 @@
import { SuperBlocks } from '../../shared/config/superblocks';
import { SuperBlocks } from '../../shared/config/curriculum';
export function getSuperBlockSubPath(superBlock: SuperBlocks): string {
const pathMap = {

View File

@@ -4,7 +4,7 @@ import fs from 'fs';
import readdirp from 'readdirp';
// TODO: remove chai and use jest's assertion errors
import { AssertionError } from 'chai';
import { SuperBlocks } from '../../../shared/config/superblocks';
import { SuperBlocks } from '../../../shared/config/curriculum';
import {
superblockSchemaValidator,
availableSuperBlocksValidator

View File

@@ -2,7 +2,7 @@ import { mkdirSync, writeFileSync, readFileSync } from 'fs';
import { resolve, dirname } from 'path';
import { submitTypes } from '../../../shared/config/challenge-types';
import { type ChallengeNode } from '../../../client/src/redux/prop-types';
import { SuperBlocks } from '../../../shared/config/superblocks';
import { SuperBlocks } from '../../../shared/config/curriculum';
type Intro = { [keyValue in SuperBlocks]: IntroProps };
export type Curriculum<T> = {