tests: fix importexport tests
The testing approach was redone to fix numerous issues: * Even if the tests had been working, none of them would have caught https://github.com/ether/etherpad-lite/issues/4808 because they didn't exercise the client-side import logic. Now they do. * Follow-up logic was not in the `helper.waitFor()` callback like it should have been. Now the code uses `async` and `await` to ensure proper execution order. * All `$.ajax()` calls used `async: false`. Now they're properly asynchronous. * The `helper.waitFor()` condition callbacks threw instead of returning false. * The string comparisons didn't allow for different attribute order (e.g., `<ol start="1" class="list-number1">` vs. `<ol class="list-number1" start="1">`). Now `Node.isEqualNode()` is used to reduce fragility. (`Node.isEqualNode()` is not perfect, so the tests are still a bit fragile: If class names or style strings are in a different order then `Node.isEqualNode()` will return false even if the nodes are semantically equivalent.) Co-authored-by: Richard Hansen <rhansen@rhansen.org>pull/4853/head
parent
e9cb1692eb
commit
8364546e70
|
@ -1,329 +1,604 @@
|
|||
'use strict';
|
||||
|
||||
describe('import functionality', function () {
|
||||
beforeEach(function (cb) {
|
||||
helper.newPad(cb); // creates a new pad
|
||||
this.timeout(60000);
|
||||
});
|
||||
|
||||
function getinnertext() {
|
||||
const inner = helper.padInner$;
|
||||
if (!inner) {
|
||||
return '';
|
||||
}
|
||||
let newtext = '';
|
||||
inner('div').each((line, el) => {
|
||||
newtext += `${el.innerHTML}\n`;
|
||||
});
|
||||
return newtext;
|
||||
}
|
||||
function importrequest(data, importurl, type) {
|
||||
let error;
|
||||
const result = $.ajax({
|
||||
url: importurl,
|
||||
type: 'post',
|
||||
processData: false,
|
||||
async: false,
|
||||
contentType: 'multipart/form-data; boundary=boundary',
|
||||
accepts: {
|
||||
text: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
||||
},
|
||||
data: [
|
||||
'Content-Type: multipart/form-data; boundary=--boundary',
|
||||
'',
|
||||
'--boundary',
|
||||
`Content-Disposition: form-data; name="file"; filename="import.${type}"`,
|
||||
'Content-Type: text/plain',
|
||||
'',
|
||||
data,
|
||||
'',
|
||||
'--boundary',
|
||||
].join('\r\n'),
|
||||
error(res) {
|
||||
error = res;
|
||||
},
|
||||
});
|
||||
expect(error).to.be(undefined);
|
||||
return result;
|
||||
}
|
||||
function exportfunc(link) {
|
||||
const exportresults = [];
|
||||
$.ajaxSetup({
|
||||
async: false,
|
||||
});
|
||||
$.get(`${link}/export/html`, (data) => {
|
||||
const start = data.indexOf('<body>');
|
||||
const end = data.indexOf('</body>');
|
||||
const html = data.substr(start + 6, end - start - 6);
|
||||
exportresults.push(['html', html]);
|
||||
});
|
||||
$.get(`${link}/export/txt`, (data) => {
|
||||
exportresults.push(['txt', data]);
|
||||
});
|
||||
return exportresults;
|
||||
}
|
||||
|
||||
xit('import a pad with newlines from txt', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const textWithNewLines = 'imported text\nnewline';
|
||||
importrequest(textWithNewLines, importurl, 'txt');
|
||||
helper.waitFor(() => expect(getinnertext())
|
||||
.to.be('<span class="">imported text</span>\n<span class="">newline</span>\n<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be('imported text<br>newline<br><br>');
|
||||
expect(results[1][1]).to.be('imported text\nnewline\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import a pad with newlines from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithNewLines = '<html><body>htmltext<br/>newline</body></html>';
|
||||
importrequest(htmlWithNewLines, importurl, 'html');
|
||||
helper.waitFor(() => expect(getinnertext())
|
||||
.to.be('<span class="">htmltext</span>\n<span class="">newline</span>\n<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be('htmltext<br>newline<br><br>');
|
||||
expect(results[1][1]).to.be('htmltext\nnewline\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import a pad with attributes from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithNewLines = '<html><body>htmltext<br/><span class="b s i u">' +
|
||||
'<b><i><s><u>newline</u></s></i></b></body></html>';
|
||||
importrequest(htmlWithNewLines, importurl, 'html');
|
||||
helper.waitFor(() => expect(getinnertext())
|
||||
.to.be('<span class="">htmltext</span>\n<span class="b i s u">' +
|
||||
'<b><i><s><u>newline</u></s></i></b></span>\n<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1])
|
||||
.to.be('htmltext<br><strong><em><s><u>newline</u></s></em></strong><br><br>');
|
||||
expect(results[1][1]).to.be('htmltext\nnewline\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import a pad with bullets from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ul class="list-bullet1"><li>bullet line 1</li>' +
|
||||
'<li>bullet line 2</li><ul class="list-bullet2"><li>bullet2 line 1</li>' +
|
||||
'<li>bullet2 line 2</li></ul></ul></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
helper.waitFor(() => expect(getinnertext()).to.be(
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>\n' +
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>\n' +
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>\n' +
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 2</span></li></ul>\n' +
|
||||
'<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be(
|
||||
'<ul class="bullet"><li>bullet line 1</li><li>bullet line 2</li>' +
|
||||
'<ul class="bullet"><li>bullet2 line 1</li><li>bullet2 line 2</li></ul></ul><br>');
|
||||
expect(results[1][1])
|
||||
.to.be('\t* bullet line 1\n\t* bullet line 2\n' +
|
||||
'\t\t* bullet2 line 1\n\t\t* bullet2 line 2\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import a pad with bullets and newlines from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ul class="list-bullet1"><li>bullet line 1</li>' +
|
||||
'</ul><br/><ul class="list-bullet1"><li>bullet line 2</li><ul class="list-bullet2">' +
|
||||
'<li>bullet2 line 1</li></ul></ul><br/><ul class="list-bullet1">' +
|
||||
'<ul class="list-bullet2"><li>bullet2 line 2</li></ul></ul></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
helper.waitFor(() => expect(getinnertext()).to.be(
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>\n' +
|
||||
'<br>\n' +
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>\n' +
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>\n' +
|
||||
'<br>\n' +
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 2</span></li></ul>\n' +
|
||||
'<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be(
|
||||
'<ul class="bullet"><li>bullet line 1</li></ul><br><ul class="bullet">' +
|
||||
'<li>bullet line 2</li><ul class="bullet"><li>bullet2 line 1</li></ul>' +
|
||||
'</ul><br><ul><ul class="bullet"><li>bullet2 line 2</li></ul></ul><br>');
|
||||
expect(results[1][1]).to.be(
|
||||
'\t* bullet line 1\n\n\t* bullet line 2\n\t\t* bullet2 line 1\n\n\t\t* bullet2 line 2\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import a pad with bullets and newlines and attributes from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ul class="list-bullet1"><li>bullet line 1</li>' +
|
||||
'</ul><br/><ul class="list-bullet1"><li>bullet line 2</li>' +
|
||||
'<ul class="list-bullet2"><li>bullet2 line 1</li></ul></ul>' +
|
||||
'<br/><ul class="list-bullet1"><ul class="list-bullet2"><ul class="list-bullet3">' +
|
||||
'<ul class="list-bullet4"><li><span class="b s i u"><b><i>' +
|
||||
'<s><u>bullet4 line 2 bisu</u></s></i></b></span></li><li>' +
|
||||
'<span class="b s "><b><s>bullet4 line 2 bs</s></b></span></li>' +
|
||||
'<li><span class="u"><u>bullet4 line 2 u</u></span><span class="u i s">' +
|
||||
'<i><s><u>uis</u></s></i></span></li></ul></ul></ul></ul></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
helper.waitFor(() => expect(getinnertext()).to.be(
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>\n<br>\n' +
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>\n' +
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>\n<br>\n' +
|
||||
'<ul class="list-bullet4"><li><span class="b i s u">' +
|
||||
'<b><i><s><u>bullet4 line 2 bisu</u></s></i></b></span></li></ul>\n' +
|
||||
'<ul class="list-bullet4"><li><span class="b s">' +
|
||||
'<b><s>bullet4 line 2 bs</s></b></span></li></ul>\n' +
|
||||
'<ul class="list-bullet4"><li><span class="u"><u>bullet4 line 2 u</u>' +
|
||||
'</span><span class="i s u"><i><s><u>uis</u></s></i></span></li></ul>\n' +
|
||||
'<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be(
|
||||
'<ul class="bullet"><li>bullet line 1</li></ul>' +
|
||||
'<br><ul class="bullet"><li>bullet line 2</li><ul class="bullet"><li>bullet2 line 1</li>' +
|
||||
'</ul></ul><br><ul><ul><ul><ul class="bullet"><li><strong><em><s><u>bullet4 line 2 bisu' +
|
||||
'</u></s></em></strong></li><li><strong><s>bullet4 line 2 bs</s></strong>' +
|
||||
'</li><li><u>bullet4 line 2 u<em><s>uis</s></em></u></li></ul></ul></ul></ul><br>');
|
||||
expect(results[1][1]).to.be(
|
||||
'\t* bullet line 1\n\n\t* bullet line 2\n\t\t* bullet2 line 1\n\n\t\t\t\t* bullet4 line 2' +
|
||||
' bisu\n\t\t\t\t* bullet4 line 2 bs\n\t\t\t\t* bullet4 line 2 uuis\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import a pad with nested bullets from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ul class="list-bullet1"><li>bullet line 1</li>' +
|
||||
'</ul><ul class="list-bullet1"><li>bullet line 2</li><ul class="list-bullet2">' +
|
||||
'<li>bullet2 line 1</li></ul></ul><ul class="list-bullet1"><ul class="list-bullet2">' +
|
||||
'<ul class="list-bullet3"><ul class="list-bullet4"><li>bullet4 line 2</li>' +
|
||||
'<li>bullet4 line 2</li><li>bullet4 line 2</li></ul><li>bullet3 line 1</li></ul>' +
|
||||
'</ul><li>bullet2 line 1</li></ul></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
const oldtext = getinnertext();
|
||||
helper.waitFor(() => oldtext !== getinnertext()
|
||||
// return expect(getinnertext()).to.be('\
|
||||
// <ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>\n\
|
||||
// <ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>\n\
|
||||
// <ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>\n\
|
||||
// <ul class="list-bullet4"><li><span class="">bullet4 line 2</span></li></ul>\n\
|
||||
// <ul class="list-bullet4"><li><span class="">bullet4 line 2</span></li></ul>\n\
|
||||
// <ul class="list-bullet4"><li><span class="">bullet4 line 2</span></li></ul>\n\
|
||||
// <br>\n')
|
||||
);
|
||||
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be(
|
||||
'<ul class="bullet"><li>bullet line 1</li><li>bullet line 2</li>' +
|
||||
'<ul class="bullet"><li>bullet2 line 1</li><ul><ul class="bullet"><li>bullet4 line 2</li>' +
|
||||
'<li>bullet4 line 2</li><li>bullet4 line 2</li></ul><li>bullet3 line 1</li></ul></ul>' +
|
||||
'<li>bullet2 line 1</li></ul><br>');
|
||||
expect(results[1][1]).to.be(
|
||||
'\t* bullet line 1\n\t* bullet line 2\n\t\t* bullet2 line 1\n\t\t\t\t* bullet4 line 2' +
|
||||
'\n\t\t\t\t* bullet4 line 2\n\t\t\t\t* bullet4 line 2\n\t\t\t* bullet3 line 1' +
|
||||
'\n\t* bullet2 line 1\n\n');
|
||||
done();
|
||||
});
|
||||
xit('import with 8 levels of bullets and newlines and attributes from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets =
|
||||
'<html><body><ul class="list-bullet1"><li>bullet line 1</li>' +
|
||||
'</ul><br/><ul class="list-bullet1"><li>bullet line 2</li><ul class="list-bullet2"><li>' +
|
||||
'bullet2 line 1</li></ul></ul><br/><ul class="list-bullet1"><ul class="list-bullet2">' +
|
||||
'<ul class="list-bullet3"><ul class="list-bullet4"><li><span class="b s i u"><b><i>' +
|
||||
'<s><u>bullet4 line 2 bisu</u></s></i></b></span></li><li><span class="b s "><b><s>' +
|
||||
'bullet4 line 2 bs</s></b></span></li><li><span class="u"><u>bullet4 line 2 u' +
|
||||
'</u></span><span class="u i s"><i><s><u>uis</u></s></i></span></li>' +
|
||||
'<ul class="list-bullet5"><ul class="list-bullet6"><ul class="list-bullet7">' +
|
||||
'<ul class="list-bullet8"><li><span class="">foo</span></li><li><span class="b s">' +
|
||||
'<b><s>foobar bs</b></s></span></li></ul></ul></ul></ul><ul class="list-bullet5">' +
|
||||
'<li>foobar</li></ul></ul></ul></ul></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
helper.waitFor(() => expect(getinnertext()).to.be(
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>\n<br>\n' +
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>\n' +
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>\n<br>\n' +
|
||||
'<ul class="list-bullet4"><li><span class="b i s u"><b><i><s><u>bullet4 line 2 bisu</u>' +
|
||||
'</s></i></b></span></li></ul>\n' +
|
||||
'<ul class="list-bullet4"><li><span class="b s"><b><s>bullet4 line 2 bs</s></b>' +
|
||||
'</span></li></ul>\n' +
|
||||
describe('importexport.js', function () {
|
||||
const testCases = [
|
||||
{
|
||||
name: 'text with newlines',
|
||||
inputText: [
|
||||
'imported text\n',
|
||||
'newline',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<span class="">imported text</span>',
|
||||
'<span class="">newline</span>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'imported text<br>',
|
||||
'newline<br>',
|
||||
].join(''),
|
||||
wantExportText: [
|
||||
'imported text\n',
|
||||
'newline\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with newlines',
|
||||
inputHtmlBody: [
|
||||
'htmltext<br>',
|
||||
'newline',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<span class="">htmltext</span>',
|
||||
'<span class="">newline</span>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'htmltext<br>',
|
||||
'newline<br>',
|
||||
'<br>',
|
||||
].join(''),
|
||||
wantExportText: [
|
||||
'htmltext\n',
|
||||
'newline\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with attributes',
|
||||
inputHtmlBody: [
|
||||
'htmltext<br>',
|
||||
'<span class="b s i u"><b><i><s><u>newline</u></s></i></b>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<span class="">htmltext</span>',
|
||||
'<span class="b i s u"><b><i><s><u>newline</u></s></i></b></span>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'htmltext<br>',
|
||||
'<strong><em><s><u>newline</u></s></em></strong><br>',
|
||||
'<br>',
|
||||
].join(''),
|
||||
wantExportText: [
|
||||
'htmltext\n',
|
||||
'newline\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with bullets',
|
||||
inputHtmlBody: [
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 1</li>',
|
||||
' <li>bullet line 2',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' <li>bullet2 line 2</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>',
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 2</span></li></ul>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 1</li>',
|
||||
' <li>bullet line 2',
|
||||
' <ul class=bullet>',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' <li>bullet2 line 2</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
].map((l) => l.replace(/^\s+/, '')).join(''),
|
||||
wantExportText: [
|
||||
'\t* bullet line 1\n',
|
||||
'\t* bullet line 2\n',
|
||||
'\t\t* bullet2 line 1\n',
|
||||
'\t\t* bullet2 line 2\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with bullets and newlines',
|
||||
inputHtmlBody: [
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 1</li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 2',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>bullet2 line 2</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 2</span></li></ul>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 1</li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 2',
|
||||
' <ul class=bullet>',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>bullet2 line 2</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
].map((l) => l.replace(/^\s+/, '')).join(''),
|
||||
wantExportText: [
|
||||
'\t* bullet line 1\n',
|
||||
'\n',
|
||||
'\t* bullet line 2\n',
|
||||
'\t\t* bullet2 line 1\n',
|
||||
'\n',
|
||||
'\t\t* bullet2 line 2\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with bullets, newlines, and attributes',
|
||||
inputHtmlBody: [
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 1</li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 2',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet3">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet4">',
|
||||
' <li><span class="b s i u"><b><i><s><u>bullet4 line 2 bisu</u>' +
|
||||
'</s></i></b></span></li>',
|
||||
' <li><span class="b s "><b><s>bullet4 line 2 bs</s></b></span></li>',
|
||||
' <li><span class="u"><u>bullet4 line 2 u</u></span>' +
|
||||
'<span class="u i s"><i><s><u>uis</u></s></i></span></li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet4"><li><span class="b i s u"><b><i><s><u>' +
|
||||
'bullet4 line 2 bisu</u></s></i></b></span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="b s"><b><s>bullet4 line 2 bs</s>' +
|
||||
'</b></span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="u"><u>bullet4 line 2 u</u></span>' +
|
||||
'<span class="i s u"><i><s><u>uis</u></s>' +
|
||||
'</i></span></li></ul>\n' +
|
||||
'<ul class="list-bullet8"><li><span class="">foo</span></li></ul>\n' +
|
||||
'<ul class="list-bullet8"><li><span class="b s"><b><s>foobar bs</s></b>' +
|
||||
'</span></li></ul>\n' +
|
||||
'<ul class="list-bullet5"><li><span class="">foobar</span></li></ul>\n' +
|
||||
'<br>\n'));
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be(
|
||||
'<ul class="bullet"><li>bullet line 1</li></ul><br><ul class="bullet">' +
|
||||
'<li>bullet line 2</li><ul class="bullet"><li>bullet2 line 1</li></ul></ul>' +
|
||||
'<br><ul><ul><ul><ul class="bullet"><li><strong><em><s><u>' +
|
||||
'bullet4 line 2 bisu</u></s></em></strong></li><li><strong><s>' +
|
||||
'bullet4 line 2 bs</s></strong></li><li><u>bullet4 line 2 u<em>' +
|
||||
'<s>uis</s></em></u></li><ul><ul><ul><ul class="bullet"><li>foo</li>' +
|
||||
'<li><strong><s>foobar bs</s></strong></li></ul></ul></ul><li>foobar</li>' +
|
||||
'</ul></ul></ul></ul></ul><br>');
|
||||
expect(results[1][1]).to.be(
|
||||
'\t* bullet line 1\n\n\t* bullet line 2\n\t\t* ' +
|
||||
'bullet2 line 1\n\n\t\t\t\t* bullet4 line 2 bisu\n\t\t\t\t* bullet4 line 2 ' +
|
||||
'bs\n\t\t\t\t* bullet4 line 2 uuis\n\t\t\t\t\t\t\t\t* foo\n\t\t\t\t\t\t\t\t* ' +
|
||||
'foobar bs\n\t\t\t\t\t* foobar\n\n');
|
||||
done();
|
||||
'<span class="i s u"><i><s><u>uis</u></s></i></span></li></ul>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'<ul class=bullet><li>bullet line 1</li></ul>',
|
||||
'<br>',
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 2',
|
||||
' <ul class=bullet><li>bullet2 line 1</li></ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li><strong><em><s><u>bullet4 line 2 bisu</u></s></em></strong></li>',
|
||||
' <li><strong><s>bullet4 line 2 bs</s></strong></li>',
|
||||
' <li><u>bullet4 line 2 u<em><s>uis</s></em></u></li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
].map((l) => l.replace(/^\s+/, '')).join(''),
|
||||
wantExportText: [
|
||||
'\t* bullet line 1\n',
|
||||
'\n',
|
||||
'\t* bullet line 2\n',
|
||||
'\t\t* bullet2 line 1\n',
|
||||
'\n',
|
||||
'\t\t\t\t* bullet4 line 2 bisu\n',
|
||||
'\t\t\t\t* bullet4 line 2 bs\n',
|
||||
'\t\t\t\t* bullet4 line 2 uuis\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with nested bullets',
|
||||
inputHtmlBody: [
|
||||
'<ul class="list-bullet1"><li>bullet line 1</li></ul>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 2',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet3">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet4">',
|
||||
' <li>bullet4 line 2</li>',
|
||||
' <li>bullet4 line 2</li>',
|
||||
' <li>bullet4 line 2</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' <li>bullet3 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>',
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="">bullet4 line 2</span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="">bullet4 line 2</span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="">bullet4 line 2</span></li></ul>',
|
||||
'<ul class="list-bullet3"><li><span class="">bullet3 line 1</span></li></ul>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 1</li>',
|
||||
' <li>bullet line 2',
|
||||
' <ul class=bullet>',
|
||||
' <li>bullet2 line 1',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>bullet4 line 2</li>',
|
||||
' <li>bullet4 line 2</li>',
|
||||
' <li>bullet4 line 2</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' <li>bullet3 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
].map((l) => l.replace(/^\s+/, '')).join(''),
|
||||
wantExportText: [
|
||||
'\t* bullet line 1\n',
|
||||
'\t* bullet line 2\n',
|
||||
'\t\t* bullet2 line 1\n',
|
||||
'\t\t\t\t* bullet4 line 2\n',
|
||||
'\t\t\t\t* bullet4 line 2\n',
|
||||
'\t\t\t\t* bullet4 line 2\n',
|
||||
'\t\t\t* bullet3 line 1\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with 8 levels of bullets, newlines, and attributes',
|
||||
inputHtmlBody: [
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 1</li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>bullet line 2',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet2">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet3">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet4">',
|
||||
' <li><span class="b s i u"><b><i><s><u>bullet4 line 2 bisu' +
|
||||
'</u></s></i></b></span></li>',
|
||||
' <li><span class="b s "><b><s>bullet4 line 2 bs</s></b></span></li>',
|
||||
' <li><span class="u"><u>bullet4 line 2 u</u></span>' +
|
||||
'<span class="u i s"><i><s><u>uis</u></s></i></span></li>',
|
||||
' <li>',
|
||||
' <ul class="list-bullet5">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet6">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet7">',
|
||||
' <li>',
|
||||
' <ul class="list-bullet8">',
|
||||
' <li><span class="">foo</span></li>',
|
||||
' <li><span class="b s"><b><s>foobar bs</b></s></span></li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' <li>',
|
||||
' <ul class="list-bullet5">',
|
||||
' <li>foobar</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 1</span></li></ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet1"><li><span class="">bullet line 2</span></li></ul>',
|
||||
'<ul class="list-bullet2"><li><span class="">bullet2 line 1</span></li></ul>',
|
||||
'<br>',
|
||||
'<ul class="list-bullet4"><li><span class="b i s u"><b><i><s><u>' +
|
||||
'bullet4 line 2 bisu</u></s></i></b></span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="b s"><b><s>bullet4 line 2 bs</s>' +
|
||||
'</b></span></li></ul>',
|
||||
'<ul class="list-bullet4"><li><span class="u"><u>bullet4 line 2 u</u></span>' +
|
||||
'<span class="i s u"><i><s><u>uis</u></s></i></span></li></ul>',
|
||||
'<ul class="list-bullet8"><li><span class="">foo</span></li></ul>',
|
||||
'<ul class="list-bullet8"><li><span class="b s"><b><s>foobar bs</s></b></span></li></ul>',
|
||||
'<ul class="list-bullet5"><li><span class="">foobar</span></li></ul>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 1</li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class=bullet>',
|
||||
' <li>bullet line 2',
|
||||
' <ul class=bullet>',
|
||||
' <li>bullet2 line 1</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
'<ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li><strong><em><s><u>bullet4 line 2 bisu</u></s></em></strong></li>',
|
||||
' <li><strong><s>bullet4 line 2 bs</s></strong></li>',
|
||||
' <li><u>bullet4 line 2 u<em><s>uis</s></em></u>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>',
|
||||
' <ul class=bullet>',
|
||||
' <li>foo</li>',
|
||||
' <li><strong><s>foobar bs</s></strong></li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' <li>foobar</li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
' </ul>',
|
||||
' </li>',
|
||||
'</ul>',
|
||||
'<br>',
|
||||
].map((l) => l.replace(/^\s+/, '')).join(''),
|
||||
wantExportText: [
|
||||
'\t* bullet line 1\n',
|
||||
'\n',
|
||||
'\t* bullet line 2\n',
|
||||
'\t\t* bullet2 line 1\n',
|
||||
'\n',
|
||||
'\t\t\t\t* bullet4 line 2 bisu\n',
|
||||
'\t\t\t\t* bullet4 line 2 bs\n',
|
||||
'\t\t\t\t* bullet4 line 2 uuis\n',
|
||||
'\t\t\t\t\t\t\t\t* foo\n',
|
||||
'\t\t\t\t\t\t\t\t* foobar bs\n',
|
||||
'\t\t\t\t\t* foobar\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
{
|
||||
name: 'HTML with ordered lists',
|
||||
inputHtmlBody: [
|
||||
'<ol class="list-number1" start="1"><li>number 1 line 1</li></ol>',
|
||||
'<ol class="list-number1" start="2"><li>number 2 line 2</li></ol>',
|
||||
].join(''),
|
||||
wantPadLines: [
|
||||
'<ol start="1" class="list-number1"><li><span class="">number 1 line 1</span></li></ol>',
|
||||
'<ol start="2" class="list-number1"><li><span class="">number 2 line 2</span></li></ol>',
|
||||
'<br>',
|
||||
],
|
||||
wantExportHtmlBody: [
|
||||
'<ol start=1 class=number>',
|
||||
' <li>number 1 line 1</li>',
|
||||
' <li>number 2 line 2</li>',
|
||||
'</ol>',
|
||||
'<br>',
|
||||
].map((l) => l.replace(/^\s+/, '')).join(''),
|
||||
wantExportText: [
|
||||
'\t1. number 1 line 1\n',
|
||||
'\t2. number 2 line 2\n',
|
||||
'\n',
|
||||
].join(''),
|
||||
},
|
||||
];
|
||||
|
||||
let confirm;
|
||||
before(async function () {
|
||||
this.timeout(60000);
|
||||
await new Promise(
|
||||
(resolve, reject) => helper.newPad((err) => err != null ? reject(err) : resolve()));
|
||||
confirm = helper.padChrome$.window.confirm;
|
||||
helper.padChrome$.window.confirm = () => true;
|
||||
// As of 2021-02-22 a mutable FileList cannot be directly created so DataTransfer is used as a
|
||||
// hack to access a mutable FileList for testing the '<input type="file">' element. DataTransfer
|
||||
// itself is quite new so support for it is tested here. See:
|
||||
// * https://github.com/whatwg/html/issues/3269
|
||||
// * https://stackoverflow.com/q/47119426
|
||||
try {
|
||||
const dt = new DataTransfer();
|
||||
dt.items.add(new File(['testing'], 'file.txt', {type: 'text/plain'}));
|
||||
// Supposedly all modern browsers support a settable HTMLInputElement.files property, but
|
||||
// Firefox 52 complains.
|
||||
helper.padChrome$('#importform input[type=file]')[0].files = dt.files;
|
||||
} catch (err) {
|
||||
return this.skip();
|
||||
}
|
||||
});
|
||||
|
||||
xit('import a pad with ordered lists from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ol class="list-number1" start="1">' +
|
||||
'<li>number 1 line 1</li></ol><ol class="list-number1" start="2">' +
|
||||
'<li>number 2 line 2</li></ol></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
console.error(getinnertext());
|
||||
expect(getinnertext()).to.be(
|
||||
'<ol class="list-number1" start="1"><li><span class="">number 1 line 1</span></li></ol>\n' +
|
||||
'<ol class="list-number1" start="2"><li><span class="">number 2 line 2</span></li></ol>\n' +
|
||||
'<br>\n');
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
expect(results[0][1]).to.be(
|
||||
'<ol class="list-number1" start="1"><li>number 1 line 1</li>' +
|
||||
'</ol><ol class="list-number1" start="2"><li>number 2 line 2</li></ol>');
|
||||
expect(results[1][1]).to.be('');
|
||||
done();
|
||||
after(async function () {
|
||||
helper.padChrome$.window.confirm = confirm;
|
||||
});
|
||||
xit('import a pad with ordered lists and newlines from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ol class="list-number1" start="1">' +
|
||||
'<li>number 9 line 1</li></ol><br/><ol class="list-number1" start="2">' +
|
||||
'<li>number 10 line 2</li><ol class="list-number2">' +
|
||||
'<li>number 2 times line 1</li></ol></ol><br/><ol class="list-bullet1">' +
|
||||
'<ol class="list-number2"><li>number 2 times line 2</li></ol></ol></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
expect(getinnertext()).to.be(
|
||||
'<ol class="list-number1" start="1"><li><span class="">number 9 line 1</span></li></ol>\n' +
|
||||
'<br>\n' +
|
||||
'<ol class="list-number1" start="2"><li><span class="">number 10 line 2</span></li>' +
|
||||
'</ol>\n' +
|
||||
'<ol class="list-number2"><li><span class="">number 2 times line 1</span></li></ol>\n' +
|
||||
'<br>\n' +
|
||||
'<ol class="list-number2"><li><span class="">number 2 times line 2</span></li></ol>\n' +
|
||||
'<br>\n');
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
console.error(results);
|
||||
done();
|
||||
});
|
||||
xit('import with nested ordered lists and attributes and newlines from html', function (done) {
|
||||
const importurl = `${helper.padChrome$.window.location.href}/import`;
|
||||
const htmlWithBullets = '<html><body><ol class="list-number1" start="1"><li>' +
|
||||
'<span class="b s i u"><b><i><s><u>bold strikethrough italics underline</u>' +
|
||||
'</s><i/></b></span> line <span class="b"><b>1bold</b></span></li>' +
|
||||
'</ol><br/><span class="i"><i><ol class="list-number1" start="2">' +
|
||||
'<li>number 10 line 2</li><ol class="list-number2">' +
|
||||
'<li>number 2 times line 1</li></ol></ol></i></span><br/>' +
|
||||
'<ol class="list-bullet1"><ol class="list-number2">' +
|
||||
'<li>number 2 times line 2</li></ol></ol></body></html>';
|
||||
importrequest(htmlWithBullets, importurl, 'html');
|
||||
expect(getinnertext()).to.be(
|
||||
'<ol class="list-number1"><li><span class="b i s u"><b><i><s><u>' +
|
||||
'bold strikethrough italics underline</u></s></i></b></span><span class="">' +
|
||||
' line </span><span class="b"><b>1bold</b></span></li></ol>\n' +
|
||||
'<br>\n' +
|
||||
'<ol class="list-number1"><li><span class="i"><i>number 10 line 2</i></span></li></ol>\n' +
|
||||
'<ol class="list-number2"><li><span class="i">' +
|
||||
'<i>number 2 times line 1</i></span></li></ol>\n' +
|
||||
'<br>\n' +
|
||||
'<ol class="list-number2"><li><span class="">number 2 times line 2</span></li></ol>\n' +
|
||||
'<br>\n');
|
||||
const results = exportfunc(helper.padChrome$.window.location.href);
|
||||
console.error(results);
|
||||
done();
|
||||
|
||||
beforeEach(async function () {
|
||||
const popup = helper.padChrome$('#import_export');
|
||||
const isVisible = () => popup.hasClass('popup-show');
|
||||
if (isVisible()) return;
|
||||
const button = helper.padChrome$('button[data-l10n-id="pad.toolbar.import_export.title"]');
|
||||
button.click();
|
||||
await helper.waitForPromise(isVisible);
|
||||
});
|
||||
|
||||
const docToHtml = (() => {
|
||||
const s = new XMLSerializer();
|
||||
return (doc) => s.serializeToString(doc);
|
||||
})();
|
||||
|
||||
const htmlToDoc = (() => {
|
||||
const p = new DOMParser();
|
||||
return (html) => p.parseFromString(html, 'text/html');
|
||||
})();
|
||||
|
||||
const htmlBodyToDoc = (htmlBody) => {
|
||||
const doc = document.implementation.createHTMLDocument();
|
||||
$('body', doc).html(htmlBody);
|
||||
return doc;
|
||||
};
|
||||
|
||||
for (const tc of testCases) {
|
||||
describe(tc.name, function () {
|
||||
it('import', async function () {
|
||||
const ext = tc.inputHtmlBody ? 'html' : 'txt';
|
||||
const contents = ext === 'html' ? docToHtml(htmlBodyToDoc(tc.inputHtmlBody)) : tc.inputText;
|
||||
// DataTransfer is used as a hacky way to get a mutable FileList. For details, see:
|
||||
// https://stackoverflow.com/q/47119426
|
||||
const dt = new DataTransfer();
|
||||
dt.items.add(new File([contents], `file.${ext}`, {type: 'text/plain'}));
|
||||
const form = helper.padChrome$('#importform');
|
||||
form.find('input[type=file]')[0].files = dt.files;
|
||||
form.find('#importsubmitinput').submit();
|
||||
try {
|
||||
await helper.waitForPromise(() => {
|
||||
const got = helper.linesDiv();
|
||||
if (got.length !== tc.wantPadLines.length) return false;
|
||||
for (let i = 0; i < got.length; i++) {
|
||||
const gotDiv = $('<div>').html(got[i].html());
|
||||
const wantDiv = $('<div>').html(tc.wantPadLines[i]);
|
||||
if (!gotDiv[0].isEqualNode(wantDiv[0])) return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
} catch (err) {
|
||||
const formatLine = (l) => ` ${JSON.stringify(l)}`;
|
||||
const g = helper.linesDiv().map((div) => formatLine(div.html())).join('\n');
|
||||
const w = tc.wantPadLines.map(formatLine).join('\n');
|
||||
throw new Error(`Import failed. Got pad lines:\n${g}\nWant pad lines:\n${w}`);
|
||||
}
|
||||
});
|
||||
|
||||
it('export to HTML', async function () {
|
||||
const link = helper.padChrome$('#exporthtmla').attr('href');
|
||||
const url = new URL(link, helper.padChrome$.window.location.href).href;
|
||||
const gotHtml = await $.ajax({url, dataType: 'html'});
|
||||
const gotBody = $('body', htmlToDoc(gotHtml));
|
||||
gotBody.html(gotBody.html().replace(/^\s+|\s+$/g, ''));
|
||||
const wantBody = $('body', htmlBodyToDoc(tc.wantExportHtmlBody));
|
||||
if (!gotBody[0].isEqualNode(wantBody[0])) {
|
||||
throw new Error(`Got exported HTML body:\n ${JSON.stringify(gotBody.html())}\n` +
|
||||
`Want HTML body:\n ${JSON.stringify(wantBody.html())}`);
|
||||
}
|
||||
});
|
||||
|
||||
it('export to text', async function () {
|
||||
const link = helper.padChrome$('#exportplaina').attr('href');
|
||||
const url = new URL(link, helper.padChrome$.window.location.href).href;
|
||||
const got = await $.ajax({url, dataType: 'text'});
|
||||
expect(got).to.be(tc.wantExportText);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue