test: stop relying on curriculum dir structure
Also refactors path resolution a little
This commit is contained in:
parent
9089ddca5c
commit
df532099bc
@ -131,6 +131,9 @@ async function parseTranslation(engPath, transPath, dict, lang) {
|
||||
function createChallengeCreator(basePath, lang) {
|
||||
const hasEnglishSource = hasEnglishSourceCreator(basePath);
|
||||
return async function createChallenge(filePath, maybeMeta) {
|
||||
function getFullPath(pathLang) {
|
||||
return path.resolve(__dirname, basePath, pathLang, filePath);
|
||||
}
|
||||
let meta;
|
||||
if (maybeMeta) {
|
||||
meta = maybeMeta;
|
||||
@ -149,17 +152,17 @@ function createChallengeCreator(basePath, lang) {
|
||||
throw Error(`Missing English challenge for
|
||||
${filePath}
|
||||
It should be in
|
||||
${path.resolve(basePath, 'english', filePath)}
|
||||
${getFullPath('english')}
|
||||
`);
|
||||
// assumes superblock names are unique
|
||||
// while the auditing is ongoing, we default to English for un-audited certs
|
||||
// once that's complete, we can revert to using isEnglishChallenge(fullPath)
|
||||
const useEnglish = lang === 'english' || !isAuditedCert(lang, superBlock);
|
||||
const challenge = await (useEnglish
|
||||
? parseMarkdown(path.resolve(basePath, 'english', filePath))
|
||||
? parseMarkdown(getFullPath('english'))
|
||||
: parseTranslation(
|
||||
path.resolve(basePath, 'english', filePath),
|
||||
path.resolve(basePath, lang, filePath),
|
||||
getFullPath('english'),
|
||||
getFullPath(lang),
|
||||
COMMENT_TRANSLATIONS,
|
||||
lang
|
||||
));
|
||||
|
@ -1,19 +1,11 @@
|
||||
/* global expect beforeAll */
|
||||
const {
|
||||
challengesDir,
|
||||
createChallengeCreator,
|
||||
hasEnglishSourceCreator
|
||||
} = require('./getChallenges');
|
||||
|
||||
/* eslint-disable max-len */
|
||||
const REAL_PATH =
|
||||
'01-responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired-accessibility.english.md';
|
||||
const REAL_MISSING_PATH =
|
||||
'01-responsive-web-design/applied-accessibility/add-a-text-alternative-to-images-for-visually-impaired.md';
|
||||
|
||||
const EXISTING_CHALLENGE_PATH = 'challenge.md';
|
||||
const MISSING_CHALLENGE_PATH = 'no/challenge.md';
|
||||
/* eslint-enable max-len */
|
||||
|
||||
let hasEnglishSource;
|
||||
let createChallenge;
|
||||
@ -23,15 +15,15 @@ describe('create non-English challenge', () => {
|
||||
describe('createChallenge', () => {
|
||||
it('throws if lang is an invalid language', async () => {
|
||||
createChallenge = createChallengeCreator(basePath, 'notlang');
|
||||
await expect(createChallenge(REAL_PATH)).rejects.toThrow(
|
||||
'notlang is not a accepted language'
|
||||
);
|
||||
await expect(
|
||||
createChallenge(EXISTING_CHALLENGE_PATH, {})
|
||||
).rejects.toThrow('notlang is not a accepted language');
|
||||
});
|
||||
it('throws an error if the source challenge is missing', async () => {
|
||||
createChallenge = createChallengeCreator(challengesDir, 'chinese');
|
||||
await expect(createChallenge(REAL_MISSING_PATH)).rejects.toThrow(
|
||||
createChallenge = createChallengeCreator(basePath, 'chinese');
|
||||
await expect(createChallenge(MISSING_CHALLENGE_PATH, {})).rejects.toThrow(
|
||||
`Missing English challenge for
|
||||
${REAL_MISSING_PATH}
|
||||
${MISSING_CHALLENGE_PATH}
|
||||
It should be in
|
||||
`
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user