refactor: convert is-audited to TypeScript (#51232)
parent
0f9066e504
commit
e99154665e
|
@ -177,6 +177,7 @@ utils/get-lines.js
|
|||
utils/get-lines.test.js
|
||||
utils/validate.js
|
||||
utils/validate.test.js
|
||||
utils/is-audited.js
|
||||
|
||||
### Old Generated files ###
|
||||
# These files are no longer generated by the client, but can
|
||||
|
|
|
@ -18,6 +18,7 @@ utils/get-lines.js
|
|||
utils/get-lines.test.js
|
||||
utils/validate.js
|
||||
utils/validate.test.js
|
||||
utils/is-audited.js
|
||||
pnpm-lock.yaml
|
||||
web/.next
|
||||
curriculum-server/data/curriculum.json
|
||||
|
|
|
@ -30,13 +30,13 @@ const linkSpacingStyle = {
|
|||
};
|
||||
|
||||
const flatSuperBlockMap = createFlatSuperBlockMap({
|
||||
showNewCurriculum: showNewCurriculum.toString(),
|
||||
showUpcomingChanges: showUpcomingChanges.toString()
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges
|
||||
});
|
||||
const firstNotAuditedSuperBlock = getFirstNotAuditedSuperBlock({
|
||||
language: curriculumLocale,
|
||||
showNewCurriculum: showNewCurriculum.toString(),
|
||||
showUpcomingChanges: showUpcomingChanges.toString()
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges
|
||||
});
|
||||
|
||||
function MapLi({
|
||||
|
|
|
@ -8,7 +8,7 @@ import { bindActionCreators, Dispatch } from 'redux';
|
|||
import { createSelector } from 'reselect';
|
||||
import { SuperBlocks } from '../../../../../config/superblocks';
|
||||
import envData from '../../../../../config/env.json';
|
||||
import { isAuditedCert } from '../../../../../utils/is-audited';
|
||||
import { isAuditedSuperBlock } from '../../../../../utils/is-audited';
|
||||
import Caret from '../../../assets/icons/caret';
|
||||
import DropDown from '../../../assets/icons/dropdown';
|
||||
import GreenNotCompleted from '../../../assets/icons/green-not-completed';
|
||||
|
@ -130,7 +130,7 @@ class Block extends Component<BlockProps> {
|
|||
);
|
||||
});
|
||||
|
||||
const isAudited = isAuditedCert(curriculumLocale, superBlock, {
|
||||
const isAudited = isAuditedSuperBlock(curriculumLocale, superBlock, {
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges
|
||||
});
|
||||
|
|
|
@ -24,8 +24,8 @@ describe('superBlockOrder', () => {
|
|||
describe('createSuperBlockMap', () => {
|
||||
it('should return an object with New and Upcoming when { showNewCurriculum: true, showUpcomingChanges: true }', () => {
|
||||
const result = createSuperBlockMap({
|
||||
showNewCurriculum: 'true',
|
||||
showUpcomingChanges: 'true'
|
||||
showNewCurriculum: true,
|
||||
showUpcomingChanges: true
|
||||
});
|
||||
expect(result[SuperBlockStages.New]).toHaveLength(
|
||||
superBlockOrder[SuperBlockStages.New].length
|
||||
|
@ -37,8 +37,8 @@ describe('createSuperBlockMap', () => {
|
|||
|
||||
it('should return an object without New and Upcoming when { showNewCurriculum: false, showUpcomingChanges: false }', () => {
|
||||
const result = createSuperBlockMap({
|
||||
showNewCurriculum: 'false',
|
||||
showUpcomingChanges: 'false'
|
||||
showNewCurriculum: false,
|
||||
showUpcomingChanges: false
|
||||
});
|
||||
expect(result[SuperBlockStages.New]).toHaveLength(0);
|
||||
expect(result[SuperBlockStages.Upcoming]).toHaveLength(0);
|
||||
|
@ -48,16 +48,16 @@ describe('createSuperBlockMap', () => {
|
|||
describe('createFlatSuperBlockMap', () => {
|
||||
it('should return an array of SuperBlocks object with New and Upcoming when { showNewCurriculum: true, showUpcomingChanges: true }', () => {
|
||||
const result = createFlatSuperBlockMap({
|
||||
showNewCurriculum: 'true',
|
||||
showUpcomingChanges: 'true'
|
||||
showNewCurriculum: true,
|
||||
showUpcomingChanges: true
|
||||
});
|
||||
expect(result).toHaveLength(Object.values(superBlockOrder).flat().length);
|
||||
});
|
||||
|
||||
it('should return an array of SuperBlocks without New and Upcoming when { showNewCurriculum: false, showUpcomingChanges: false }', () => {
|
||||
const result = createFlatSuperBlockMap({
|
||||
showNewCurriculum: 'false',
|
||||
showUpcomingChanges: 'false'
|
||||
showNewCurriculum: false,
|
||||
showUpcomingChanges: false
|
||||
});
|
||||
const tempSuperBlockMap = { ...superBlockOrder };
|
||||
tempSuperBlockMap[SuperBlockStages.New] = [];
|
||||
|
@ -70,8 +70,8 @@ describe('firstNotAuditedSuperBlock', () => {
|
|||
it("should return 'null' when language is 'english'", () => {
|
||||
const result = getFirstNotAuditedSuperBlock({
|
||||
language: Languages.English,
|
||||
showNewCurriculum: 'false',
|
||||
showUpcomingChanges: 'false'
|
||||
showNewCurriculum: false,
|
||||
showUpcomingChanges: false
|
||||
});
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
@ -79,8 +79,8 @@ describe('firstNotAuditedSuperBlock', () => {
|
|||
it("should return a SuperBlock when language is 'chinese'", () => {
|
||||
const result = getFirstNotAuditedSuperBlock({
|
||||
language: Languages.Chinese,
|
||||
showNewCurriculum: 'false',
|
||||
showUpcomingChanges: 'false'
|
||||
showNewCurriculum: false,
|
||||
showUpcomingChanges: false
|
||||
});
|
||||
expect(result).toEqual(SuperBlocks.CollegeAlgebraPy);
|
||||
});
|
||||
|
@ -110,8 +110,8 @@ describe('getAuditedSuperBlocks', () => {
|
|||
Object.keys(notAuditedSuperBlocks).forEach(language => {
|
||||
it(`should return only audited SuperBlocks for ${language}`, () => {
|
||||
const auditedSuperBlocks = getAuditedSuperBlocks({
|
||||
showNewCurriculum: 'true',
|
||||
showUpcomingChanges: 'true',
|
||||
showNewCurriculum: true,
|
||||
showUpcomingChanges: true,
|
||||
language
|
||||
});
|
||||
|
||||
|
|
|
@ -206,8 +206,8 @@ export const notAuditedSuperBlocks: NotAuditedSuperBlocks = {
|
|||
Object.freeze(notAuditedSuperBlocks);
|
||||
|
||||
type Config = {
|
||||
showNewCurriculum: string | undefined;
|
||||
showUpcomingChanges: string | undefined;
|
||||
showNewCurriculum: boolean;
|
||||
showUpcomingChanges: boolean;
|
||||
};
|
||||
|
||||
type LanguagesConfig = Config & {
|
||||
|
@ -221,10 +221,10 @@ export function createSuperBlockMap({
|
|||
showUpcomingChanges
|
||||
}: Config): SuperBlockOrder {
|
||||
const superBlockMap = { ...superBlockOrder };
|
||||
if (showNewCurriculum !== 'true') {
|
||||
if (!showNewCurriculum) {
|
||||
superBlockMap[SuperBlockStages.New] = [];
|
||||
}
|
||||
if (showUpcomingChanges !== 'true') {
|
||||
if (!showUpcomingChanges) {
|
||||
superBlockMap[SuperBlockStages.Upcoming] = [];
|
||||
}
|
||||
return superBlockMap;
|
||||
|
@ -235,10 +235,10 @@ export function createFlatSuperBlockMap({
|
|||
showUpcomingChanges
|
||||
}: Config): SuperBlocks[] {
|
||||
const superBlockMap = { ...superBlockOrder };
|
||||
if (showNewCurriculum !== 'true') {
|
||||
if (!showNewCurriculum) {
|
||||
superBlockMap[SuperBlockStages.New] = [];
|
||||
}
|
||||
if (showUpcomingChanges !== 'true') {
|
||||
if (!showUpcomingChanges) {
|
||||
superBlockMap[SuperBlockStages.Upcoming] = [];
|
||||
}
|
||||
return Object.values(superBlockMap).flat();
|
||||
|
@ -264,8 +264,8 @@ export function getFirstNotAuditedSuperBlock({
|
|||
|
||||
export function getAuditedSuperBlocks({
|
||||
language = 'english',
|
||||
showNewCurriculum = 'false',
|
||||
showUpcomingChanges = 'false'
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges
|
||||
}: LanguagesConfig): SuperBlocks[] {
|
||||
if (!Object.prototype.hasOwnProperty.call(notAuditedSuperBlocks, language)) {
|
||||
throw Error(`'${language}' key not found in 'notAuditedSuperBlocks'`);
|
||||
|
|
|
@ -14,7 +14,7 @@ const {
|
|||
} = require('../tools/challenge-parser/translation-parser');
|
||||
/* eslint-enable max-len*/
|
||||
|
||||
const { isAuditedCert } = require('../utils/is-audited');
|
||||
const { isAuditedSuperBlock } = require('../utils/is-audited');
|
||||
const { createPoly } = require('../utils/polyvinyl');
|
||||
const { getSuperOrder, getSuperBlockFromDir } = require('./utils');
|
||||
|
||||
|
@ -321,9 +321,9 @@ ${getFullPath('english', filePath)}
|
|||
challenge.helpCategory = challenge.helpCategory || meta.helpCategory;
|
||||
challenge.translationPending =
|
||||
lang !== 'english' &&
|
||||
!isAuditedCert(lang, meta.superBlock, {
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM,
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES
|
||||
!isAuditedSuperBlock(lang, meta.superBlock, {
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM === 'true',
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES === 'true'
|
||||
});
|
||||
challenge.usesMultifileEditor = !!meta.usesMultifileEditor;
|
||||
}
|
||||
|
@ -358,7 +358,7 @@ ${getFullPath('english', filePath)}
|
|||
|
||||
// We always try to translate comments (even English ones) to confirm that translations exist.
|
||||
const translateComments =
|
||||
isAuditedCert(lang, meta.superBlock, {
|
||||
isAuditedSuperBlock(lang, meta.superBlock, {
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM,
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES
|
||||
}) && fs.existsSync(getFullPath(lang, filePath));
|
||||
|
|
|
@ -43,8 +43,8 @@ function createSuperOrder(superBlocks) {
|
|||
}
|
||||
|
||||
const flatSuperBlockMap = createFlatSuperBlockMap({
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM,
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM === 'true',
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES === 'true'
|
||||
});
|
||||
const superOrder = createSuperOrder(flatSuperBlockMap);
|
||||
|
||||
|
|
|
@ -111,8 +111,8 @@ void (async () => {
|
|||
console.log(`\n=== ${lang} ===`);
|
||||
const certs = getAuditedSuperBlocks({
|
||||
language: lang,
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM,
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES
|
||||
showNewCurriculum: process.env.SHOW_NEW_CURRICULUM === 'true',
|
||||
showUpcomingChanges: process.env.SHOW_UPCOMING_CHANGES === 'true'
|
||||
});
|
||||
const langCurriculumDirectory = join(
|
||||
process.cwd(),
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
const { getAuditedSuperBlocks } = require('../config/superblocks');
|
||||
|
||||
function isAuditedCert(
|
||||
language,
|
||||
superblock,
|
||||
{ showNewCurriculum, showUpcomingChanges }
|
||||
) {
|
||||
if (!language || !superblock)
|
||||
throw Error('Both arguments must be provided for auditing');
|
||||
|
||||
const auditedSuperBlocks = getAuditedSuperBlocks({
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges,
|
||||
language
|
||||
});
|
||||
return auditedSuperBlocks.includes(superblock);
|
||||
}
|
||||
|
||||
exports.isAuditedCert = isAuditedCert;
|
|
@ -0,0 +1,22 @@
|
|||
import { type SuperBlocks, getAuditedSuperBlocks } from '../config/superblocks';
|
||||
|
||||
export function isAuditedSuperBlock(
|
||||
language: string,
|
||||
superblock: SuperBlocks,
|
||||
{
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges
|
||||
}: { showNewCurriculum: boolean; showUpcomingChanges: boolean }
|
||||
) {
|
||||
// TODO: when all the consumers of this function use TypeScript we can remove
|
||||
// this check
|
||||
if (!language || !superblock)
|
||||
throw Error('Both arguments must be provided for auditing');
|
||||
|
||||
const auditedSuperBlocks = getAuditedSuperBlocks({
|
||||
showNewCurriculum,
|
||||
showUpcomingChanges,
|
||||
language
|
||||
});
|
||||
return auditedSuperBlocks.includes(superblock);
|
||||
}
|
Loading…
Reference in New Issue