2019-03-09 23:39:50 -06:00
|
|
|
const marked = require('../../');
|
|
|
|
const HtmlDiffer = require('@markedjs/html-differ').HtmlDiffer;
|
|
|
|
const htmlDiffer = new HtmlDiffer({ignoreSelfClosingSlash: true});
|
2018-04-09 21:45:37 -05:00
|
|
|
|
2019-03-11 11:12:46 -05:00
|
|
|
beforeEach(() => {
|
2018-04-10 07:53:59 -05:00
|
|
|
marked.setOptions(marked.getDefaults());
|
2019-03-09 23:39:50 -06:00
|
|
|
|
|
|
|
jasmine.addMatchers({
|
2019-03-11 11:12:46 -05:00
|
|
|
toRender: () => {
|
2019-03-09 23:39:50 -06:00
|
|
|
return {
|
2019-03-11 11:12:46 -05:00
|
|
|
compare: (spec, expected) => {
|
2019-03-09 23:39:50 -06:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
});
|
2018-04-09 21:45:37 -05:00
|
|
|
});
|