test(
'tinymce.plugins.paste.browser.NewlinesTest', [
'ephox.agar.api.Assertions',
'ephox.katamari.api.Obj',
'ephox.katamari.api.Arr',
'tinymce.themes.modern.Theme',
'tinymce.plugins.paste.Plugin',
'tinymce.plugins.paste.core.Newlines'
],
function (Assertions, Obj, Arr, Theme, PastePlugin, Newlines) {
Theme();
PastePlugin();
// testing Newlines.isPlainText()
var textCases = [
{
label: "Basic Chrome markup (including span-wrapped tab)",
content: '<div><span style="white-space:pre"> </span>a</div><div><br></div><div>b</div>',
isText: true
},
{
label: "Case shouldn't matter",
content: '<DIV>a</DIV><DIV><BR></DIV>',
isText: true
},
{
label: "Support all BR types",
content: '<br><br />',
isText: true
},
{
label: "Basic IE markup",
content: '<p>a</p><p><br></p><p>b</p>',
isText: true
},
{
label: "White-space wrapper (Chrome)",
content: '<div><span style="white-space: pre;"> </span>a</div>',
isText: true
},
{
label: "White-space wrapper (Chrome) with additional styles",
content: '<div><span style="white-space: pre; color: red;"> </span>a</div>',
isText: false
},
{
label: "Allowed tag but with attributes qualifies string as not a plain text",
content: '<br data-mce-bogus="all" />',
isText: false
}
];
// only DIV,P,BR and SPAN[style="white-space:pre"] tags are allowed in "plain text" string
Arr.each('a,abbr,address,article,aside,audio,b,bdi,bdo,blockquote,button,cite,code,del,details,dfn,dl,em,embed,fieldset,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,i,ins,label,menu,nav,noscript,object,ol,pre,q,s,script,section,select,small,strong,style,sub,sup,svg,table,textarea,time,u,ul,var,video,wbr'.split(','),
function (tag) {
var content = '<p>a</p><' + tag + '>b</' + tag + '><p>c<br>d</p>';
textCases.push({
label: tag.toUpperCase() + ' tag should qualify content (' + content + ') as not a plain text',
content: content,
isText: false
});
}
);
Obj.each(textCases, function (c) {
Assertions.assertEq(c.label || "Asserting: " + c.content, c.isText, Newlines.isPlainText(c.content));
});
}
);
|