fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass setUp : function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass tearDown : function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass test_load: function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isObject(Y.Frame, 'EditorBase was not loaded');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isObject(Y.EditorBase, 'EditorBase was not loaded');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass test_frame: function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass use: ['node','selector-css3', 'dd-drag', 'dd-ddm']
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isInstanceOf(Y.Frame, iframe, 'Iframe instance can not be created');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass this.wait(function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isTrue(iframeReady, 'IFRAME ready event did not fire');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isInstanceOf(YUI, inst, 'Internal instance not created');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isObject(inst.DD.Drag, 'DD Not loaded inside the frame');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isObject(inst.DD.DDM, 'DD Not loaded inside the frame');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isObject(inst.Slider, 'Failed to load Slider inside frame object');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(n, e, 'iframe node getter failed');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.isTrue((id.indexOf('iframe-yui') === 0));
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass 'test: _DOMPaste': function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass getData: function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass return 'foobar'
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame(e.clipboardData.getData(), 'foobar');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass getData: function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass return 'foobar'
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isNull(Y.one('#editor iframe'), 'iframe DOM node was not destroyed');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass test_editor: function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'EditorBase instance can not be created');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'execcommand': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'paste': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'mouseup': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'mousedown': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'keydown': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'keyup': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'keypress': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'enter': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'enter-up': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'enter-down': true,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass 'enter-press': true
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(events[e.changedType], 'NodeChange working for ' + e.changedType);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(e.changedNode.test('b, body'), 'Changed Node');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass this.wait(function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isTrue(iframeReady, 'IFRAME ready event did not fire');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isInstanceOf(YUI, inst, 'Internal instance not created');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isObject(inst.DD.Drag, 'DD Not loaded inside the frame');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isObject(inst.DD.DDM, 'DD Not loaded inside the frame');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.areSame(Y.EditorBase.FILTER_RGB(inst.one('b').getStyle('color')), '#ff0000', 'Extra CSS Failed');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = Y.Node.create('<b><u><div style="font-family: Arial; color: purple">Foo</div></u></b>'),
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(node.one('div').getStyle('color'), node2.getStyle('color'), 'Style failed to copy');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(node.one('div').getStyle('fontFamily'), node2.getStyle('fontFamily'), 'Style failed to copy');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = editor._resolveChangedNode(inst.one('html'));
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areNotSame(inst.one('html'), node, 'Failed to resolve HTML node');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(inst.one('body'), node, 'Failed to resolve HTML node');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areEqual(ex + 'Hello <b>World</b>!!'.toLowerCase(), html.toLowerCase(), 'getContent failed to get the editor content');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var n = Y.Node.create('<span style="font-size: -webkit-xxx-large"></span>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass if (Y.UA.webkit) { //Can't apply -webkit styles in something other than webkit, duh..
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('48px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('32px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('24px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('18px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('16px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('13px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('10px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = inst.Node.create('<font face="" style="foo: bar; font-family: ;"></font>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(node.getAttribute('face'), '', 'Failed to remove font face');
61c1229f15280afc77930d9904686ede020d3117Dav Glass //IE 6 doesn't like the getAttribute('style') call, it returns an object
61c1229f15280afc77930d9904686ede020d3117Dav Glass Y.Assert.isTrue((node.getAttribute('style').indexOf('foo: bar') > -1), 'Failed to remove font-family ;');
61c1229f15280afc77930d9904686ede020d3117Dav Glass Y.Assert.isTrue((node.getAttribute('style').indexOf('font-family') === -1), 'Failed to remove font-family ;');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(node.getAttribute('style'), '', 'Failed to remove style attribute');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = inst.Node.create('<p><font><strong>This is <i>a test</i></strong></font>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('This is a test', text, 'Failed to filter out HTML');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(0, count, 'Cursor object found');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(0, count, 'Cursor object found');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.execCommand('inserthtml', 'This is another test<br>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(editor.getContent().indexOf('This is a test') > -1, 'Failed to insert content');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(editor.getContent().indexOf('This is another test') > -1, 'Failed to insert content');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(html.indexOf('<div>') > -1, 'Failed to wrap the content');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass 'test: EditorSelection': function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame('foobar', n.innerHTML.toLowerCase());
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame('span', n.tagName.toLowerCase());
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass //sel.remove();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame('EditorSelection Object', sel.toString());
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass No Asserts here yet, this test is only to
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass show that there are no syntax errors thrown running
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass an execCommand.
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass I still need to develop a way to properly test these commands
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.EditorSelection.hasCursor = function() { return true };
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass editor.execCommand('insertandfocus', '<b>Foo</b>');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass for (var i in SEL) {
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass test_window: function() {
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass Y.Assert.areEqual(Y.Node.getDOMNode(Y.one('#editor iframe').get('contentWindow')), Y.Node.getDOMNode(editor.getInstance().one('win')), 'Window object is not right');
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass test_doc: function() {
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass Y.Assert.areEqual(Y.Node.getDOMNode(Y.one('#editor iframe').get('contentWindow.document')), Y.Node.getDOMNode(editor.getInstance().one('doc')), 'Document object is not right');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass 'test: selection.remove()': function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor iframe'), null, 'Frame was not destroyed');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Second EditorBase instance can not be created');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorBR, editor.editorBR, 'EditorBR was not plugged..');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor iframe'), null, 'Second Frame was not destroyed');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Third EditorBase instance can not be created');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorPara, editor.editorPara, 'EditorPara was not plugged..');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = editor.frame.exec._wrapContent(str, true);
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor iframe'), null, 'Third Frame was not destroyed');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Forth EditorBase instance can not be created');
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass //This should error
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorPara, editor.editorPara, 'EditorPara was not plugged..');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor frame'), null, 'Forth Frame was not destroyed');
008f8a72828325c3326b73e5d40abef1cdac4896Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Fifth EditorBase instance can not be created');
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass //This should error
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorBR, editor.editorBR, 'EditorBR was not plugged..');
008f8a72828325c3326b73e5d40abef1cdac4896Dav Glass Y.Assert.areEqual(Y.one('#editor frame'), null, 'Fifth Frame was not destroyed');
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass this.wait(function() {
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass //This should error
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorBidi, editor.editorBidi, 'EditorBidi plugin failed to load');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), '', 'Default direction');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), 'rtl', 'RTL not added to node');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), 'ltr', 'LTR not added to node');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), 'rtl', 'RTL not added BACK to node');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = Y.Plugin.EditorBidi.blockParent(inst.one('body').get('firstChild.firstChild'));
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = Y.Plugin.EditorBidi.addParents([inst.one('body').get('firstChild')]);
eff9fa15f2fbdf22c5d33c82d48bd9d0ee0640abDav Glass test_selection_methods: ((Y.UA.ie || Y.UA.webkit) ? true : false),
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass test_execCommands: ((Y.UA.webkit || (Y.UA.ie && Y.UA.ie === 9) || Y.UA.chrome) ? true : false)
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass test_selection_methods: (Y.UA.ie || Y.UA.webkit ? true : false),