52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
|
/* global expect*/
|
||
|
const isArray = require('lodash/isArray');
|
||
|
const find = require('unist-util-find');
|
||
|
const { root } = require('mdast-builder');
|
||
|
|
||
|
const getAllBetween = require('./between-headings');
|
||
|
const simpleAst = require('../../__fixtures__/ast-simple.json');
|
||
|
const extraHeadingAst = require('../../__fixtures__/ast-extra-heading.json');
|
||
|
|
||
|
describe('between-headings', () => {
|
||
|
it('should return an array', () => {
|
||
|
expect.assertions(1);
|
||
|
const actual = getAllBetween(simpleAst, '--hints--');
|
||
|
expect(isArray(actual)).toBe(true);
|
||
|
});
|
||
|
|
||
|
it('should return an empty array if the marker is not present', () => {
|
||
|
expect.assertions(2);
|
||
|
const actual = getAllBetween(simpleAst, '--not-a-marker--');
|
||
|
expect(isArray(actual)).toBe(true);
|
||
|
expect(actual.length).toBe(0);
|
||
|
});
|
||
|
|
||
|
it('should include any headings without markers', () => {
|
||
|
expect.assertions(1);
|
||
|
const actual = getAllBetween(extraHeadingAst, '--description--');
|
||
|
expect(
|
||
|
find(root(actual), {
|
||
|
value: 'this should still be inside --description--'
|
||
|
})
|
||
|
).not.toBeUndefined();
|
||
|
});
|
||
|
|
||
|
it('should include the rest of the AST if there is no end marker', () => {
|
||
|
expect.assertions(2);
|
||
|
const actual = getAllBetween(extraHeadingAst, '--solutions--');
|
||
|
expect(actual.length > 0).toBe(true);
|
||
|
expect(
|
||
|
find(root(actual), { value: 'body {\n background: white;\n}' })
|
||
|
).not.toBeUndefined();
|
||
|
});
|
||
|
|
||
|
it('should match the hints snapshot', () => {
|
||
|
const actual = getAllBetween(simpleAst, '--hints--');
|
||
|
expect(actual).toMatchSnapshot();
|
||
|
});
|
||
|
it('should match the instructions snapshot', () => {
|
||
|
const actual = getAllBetween(simpleAst, '--instructions--');
|
||
|
expect(actual).toMatchSnapshot();
|
||
|
});
|
||
|
});
|