marked/test/helpers/helpers.js
2019-03-12 09:32:45 -05:00

43 lines
1.3 KiB
JavaScript

const marked = require('../../');
const HtmlDiffer = require('@markedjs/html-differ').HtmlDiffer;
const htmlDiffer = new HtmlDiffer({ignoreSelfClosingSlash: true});
beforeEach(() => {
marked.setOptions(marked.getDefaults());
jasmine.addMatchers({
toRender: () => {
return {
compare: (spec, expected) => {
const result = {};
const actual = marked(spec.markdown, spec.options);
result.pass = htmlDiffer.isEqual(expected, actual);
if (result.pass) {
result.message = spec.markdown + '\n------\n\nExpected: Should Fail';
} else {
var expectedHtml = expected.replace(/\s/g, '');
var actualHtml = actual.replace(/\s/g, '');
for (var i = 0; i < expectedHtml.length; i++) {
if (actualHtml[i] !== expectedHtml[i]) {
actualHtml = actualHtml.substring(
Math.max(i - 30, 0),
Math.min(i + 30, actualHtml.length));
expectedHtml = expectedHtml.substring(
Math.max(i - 30, 0),
Math.min(i + 30, expectedHtml.length));
break;
}
}
result.message = 'Expected:\n' + expectedHtml + '\n\nActual:\n' + actualHtml;
}
return result;
}
};
}
});
});