feat(challenge-parser): add feedback to mc questions (#51942)

This commit is contained in:
Tom
2023-11-02 01:28:53 -05:00
committed by GitHub
parent 7e1f7e060a
commit bce1b9915b
28 changed files with 346 additions and 42 deletions

View File

@@ -0,0 +1,21 @@
const find = require('unist-util-find');
const findAllBefore = require('unist-util-find-all-before');
function getAllBefore(tree, marker) {
const start = find(tree, {
type: 'heading',
children: [
{
type: 'text',
value: marker
}
]
});
if (!start) return [];
// reverse because it goes up the tree backwards and adds nodes in that order
return findAllBefore(tree, start).reverse();
}
module.exports = getAllBefore;

View File

@@ -0,0 +1,24 @@
const isArray = require('lodash/isArray');
const simpleAst = require('../../__fixtures__/ast-simple.json');
const getAllBefore = require('./before-heading');
describe('before-headings', () => {
it('should return an array', () => {
expect.assertions(1);
const actual = getAllBefore(simpleAst, '--hints--');
expect(isArray(actual)).toBe(true);
});
it('should return an empty array if the marker is not present', () => {
expect.assertions(2);
const actual = getAllBefore(simpleAst, '--not-a-marker--');
expect(isArray(actual)).toBe(true);
expect(actual.length).toBe(0);
});
it('should include the whole AST before the marker', () => {
expect.assertions(1);
const actual = getAllBefore(simpleAst, '--hints--');
expect(actual).toHaveLength(6);
});
});