mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2025-12-19 10:07:46 -05:00
68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
import fs from 'fs';
|
|
import { join } from 'path';
|
|
|
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
import { getFileName } from './get-file-name';
|
|
|
|
const basePath = join(process.cwd(), '__fixtures__');
|
|
const commonPath = join(basePath, 'curriculum', 'challenges');
|
|
|
|
const block = 'project-get-file-name';
|
|
const metaPath = join(commonPath, '_meta', block);
|
|
const superBlockPath = join(commonPath, 'english', 'superblock-get-file-name');
|
|
const projectPath = join(superBlockPath, block);
|
|
|
|
describe('getFileName helper', () => {
|
|
beforeEach(() => {
|
|
fs.mkdirSync(superBlockPath, { recursive: true });
|
|
fs.mkdirSync(projectPath, { recursive: true });
|
|
fs.mkdirSync(metaPath, { recursive: true });
|
|
fs.writeFileSync(
|
|
join(projectPath, 'this-is-a-challenge.md'),
|
|
'---\nid: a\ntitle: This is a Challenge\n---',
|
|
'utf-8'
|
|
);
|
|
fs.writeFileSync(
|
|
join(projectPath, 'what-a-cool-thing.md'),
|
|
'---\nid: b\ntitle: What a Cool Thing\n---',
|
|
'utf-8'
|
|
);
|
|
fs.writeFileSync(
|
|
join(projectPath, 'i-dunno.md'),
|
|
'---\nid: c\ntitle: I Dunno\n---',
|
|
'utf-8'
|
|
);
|
|
fs.writeFileSync(
|
|
join(metaPath, 'meta.json'),
|
|
`{
|
|
"id": "mock-id",
|
|
"challengeOrder": [{"id": "a", "title": "This title is wrong"}, {"id": "b", "title": "I Dunno"}, {"id": "c", "title": "What a Cool Thing"}}}]}`,
|
|
'utf-8'
|
|
);
|
|
});
|
|
|
|
it('should return the file name if found', async () => {
|
|
expect.assertions(1);
|
|
process.env.CALLING_DIR = projectPath;
|
|
const fileName = await getFileName('a');
|
|
expect(fileName).toEqual('this-is-a-challenge.md');
|
|
});
|
|
|
|
it('should return null if not found', async () => {
|
|
expect.assertions(1);
|
|
process.env.CALLING_DIR = projectPath;
|
|
const fileName = await getFileName('d');
|
|
expect(fileName).toBeNull();
|
|
});
|
|
|
|
afterEach(() => {
|
|
delete process.env.CALLING_DIR;
|
|
try {
|
|
fs.rmSync(basePath, { recursive: true });
|
|
} catch (err) {
|
|
console.log(err);
|
|
console.log('Could not remove fixtures folder.');
|
|
}
|
|
});
|
|
});
|