6a6a6d5448f8c49592581707a20e891abe577bfaDav GlassYUI.add('editor-tests', function(Y) {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass var editor = null,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass iframe = null,
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass fireKey = function(editor, key) {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass var inst = editor.getInstance();
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass inst.one('body').simulate('keydown', {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass keyCode: key
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass });
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass inst.one('body').simulate('keypress', {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass keyCode: key
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass });
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass inst.one('body').simulate('keyup', {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass keyCode: key
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass });
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass },
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass template = {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass name: 'Editor Tests',
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass setUp : function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass },
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass tearDown : function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass },
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 },
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass test_frame: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var iframeReady = false;
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
762b21413a7bbc38b5c7b2d94385fb44f26f9d39Dav Glass iframe = new Y.Frame({
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass container: '#editor',
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass designMode: true,
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass content: 'This is a test.',
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass use: ['node','selector-css3', 'dd-drag', 'dd-ddm']
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass });
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isInstanceOf(Y.Frame, iframe, 'Iframe instance can not be created');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass iframe.after('ready', function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass iframeReady = true;
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass });
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass iframe.render();
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass this.wait(function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isTrue(iframeReady, 'IFRAME ready event did not fire');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass var inst = iframe.getInstance();
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
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');
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass }, 1500);
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_frame_use: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var inst = iframe.getInstance(),
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test = this;
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass iframe.use('slider', function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test.resume(function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isObject(inst.Slider, 'Failed to load Slider inside frame object');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass });
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass });
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test.wait();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_frame_general: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var n = iframe.get('node');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var e = Y.one('#editor iframe');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(n, e, 'iframe node getter failed');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass iframe._fixIECursors();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass iframe.delegate('click', function() {});
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var id = iframe.get('id');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.isTrue((id.indexOf('iframe-yui') === 0));
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass },
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass 'test: _DOMPaste': function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var OT = 'ORIGINAL_TARGET',
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass fired = false;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var inst = iframe.getInstance(),
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass win = inst.config.win;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.config.win = {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass clipboardData: {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass getData: function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass return 'foobar'
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass };
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass iframe.on('dom:paste', function(e) {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass fired = true;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame(e.clipboardData.data, 'foobar');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame(e.clipboardData.getData(), 'foobar');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass });
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass iframe._DOMPaste({
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass _event: {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass originalTarget: OT,
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass target: OT,
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass currentTarget: OT,
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass clipboardData: {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass getData: function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass return 'foobar'
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass });
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.isTrue(fired);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.config.win = win;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_frame_destroy: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass iframe.destroy();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isNull(Y.one('#editor iframe'), 'iframe DOM node was not destroyed');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass test_editor: function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.EditorBase.USE.push('dd');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.EditorBase.USE.push('node-event-simulate');
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass var iframeReady = false;
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass editor = new Y.EditorBase({
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass content: 'Hello <b>World</b>!!',
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass extracss: 'b { color: red; }'
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass });
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'EditorBase instance can not be created');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
762b21413a7bbc38b5c7b2d94385fb44f26f9d39Dav Glass editor.after('ready', function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass iframeReady = true;
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass });
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass editor.on('nodeChange', function(e) {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var events = {
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 };
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(events[e.changedType], 'NodeChange working for ' + e.changedType);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass if (e.changedType !== 'execcommand') {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.isTrue(e.changedNode.test('b, body'), 'Changed Node');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass }
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass });
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass editor.render('#editor');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.hide();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.show();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass this.wait(function() {
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Assert.isTrue(iframeReady, 'IFRAME ready event did not fire');
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass var inst = editor.getInstance();
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
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 inst.one('body').simulate('mousedown', {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass pageX: 100,
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass pageY: 100
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass });
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass inst.one('b').simulate('mousedown');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass inst.one('body').simulate('mouseup');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass inst.one('b').simulate('mouseup');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass fireKey(editor, 13);
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass }, 1500);
e0b25dbc0322a078f384c45b48e5690f23d7eb15Dav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_copy_styles: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = Y.Node.create('<b><u><div style="font-family: Arial; color: purple">Foo</div></u></b>'),
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass node2 = Y.Node.create('<div/>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.copyStyles(node.one('div'), node2);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
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
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = Y.Node.create('<a>'),
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass node2 = Y.Node.create('<div/>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.copyStyles(node, node2);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_resolve_node: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var inst = editor.getInstance();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = editor._resolveChangedNode(inst.one('html'));
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areNotSame(inst.one('html'), node, 'Failed to resolve HTML node');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = editor._resolveChangedNode(null);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(inst.one('body'), node, 'Failed to resolve HTML node');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_get_content: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var html = editor.getContent(),
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass ex = ((Y.UA.gecko) ? '<br>' : '');
61c1229f15280afc77930d9904686ede020d3117Dav Glass if (Y.UA.ie) {
61c1229f15280afc77930d9904686ede020d3117Dav Glass html = html.replace(' style=""', '');
61c1229f15280afc77930d9904686ede020d3117Dav Glass }
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areEqual(ex + 'Hello <b>World</b>!!'.toLowerCase(), html.toLowerCase(), 'getContent failed to get the editor content');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_font_size_normalize: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var n = Y.Node.create('<span style="font-size: -webkit-xxx-large"></span>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass if (Y.UA.webkit) { //Can't apply -webkit styles in something other than webkit, duh..
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('48px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass }
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass n.setStyle('fontSize', 'xx-large');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('32px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass n.setStyle('fontSize', 'x-large');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('24px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass n.setStyle('fontSize', 'large');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('18px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass n.setStyle('fontSize', 'medium');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('16px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass n.setStyle('fontSize', 'small');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('13px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass n.setStyle('fontSize', 'x-small');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var size = Y.EditorBase.NORMALIZE_FONTSIZE(n);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('10px', size, 'Failed to parse size');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_selection_font_removal: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var inst = editor.getInstance();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = inst.Node.create('<font face="" style="foo: bar; font-family: ;"></font>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass inst.EditorSelection.removeFontFamily(node);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(node.getAttribute('face'), '', 'Failed to remove font face');
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass if (!Y.UA.ie || (Y.UA.ie && Y.UA.ie > 8)) {
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 ;');
61c1229f15280afc77930d9904686ede020d3117Dav Glass }
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass node.setAttribute('style', 'font-family: ');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass inst.EditorSelection.removeFontFamily(node);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(node.getAttribute('style'), '', 'Failed to remove style attribute');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_gettext: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var inst = editor.getInstance();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var node = inst.Node.create('<p><font><strong>This is <i>a test</i></strong></font>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var text = inst.EditorSelection.getText(node);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame('This is a test', text, 'Failed to filter out HTML');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_selection_general: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var inst = editor.getInstance();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var count = inst.EditorSelection.hasCursor();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(0, count, 'Cursor object found');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass inst.EditorSelection.cleanCursor();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var count = inst.EditorSelection.hasCursor();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass Y.Assert.areSame(0, count, 'Cursor object found');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass test_selection_methods: function() {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var inst = editor.getInstance(),
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass sel = new inst.EditorSelection();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass sel.insertContent('This is a test<br>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.execCommand('inserthtml', 'This is another test<br>');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.execCommand('selectall');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass editor.execCommand('wrap', 'div');
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass var html = editor.getContent().toLowerCase();
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass sel.setCursor(true);
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass
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
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass },
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass 'test: EditorSelection': function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var inst = editor.getInstance(),
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel = new inst.EditorSelection(),
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass html = '<b>Foobar</b>',
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass node = inst.Node.create(html);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var n = sel._wrap(node, 'span');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame('foobar', n.innerHTML.toLowerCase());
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame('span', n.tagName.toLowerCase());
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var a = sel.anchorNode;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel.anchorNode = node;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel.replace('Foobar', 'davglass');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass //sel.remove();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel.anchorNode = a;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areSame('EditorSelection Object', sel.toString());
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass test_execCommands: function() {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.focus(true);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass /*
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
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass I still need to develop a way to properly test these commands
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass */
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass var inst = editor.getInstance();
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass var cmds = Y.Plugin.ExecCommand.COMMANDS;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var b = cmds.bidi;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.each(cmds, function(val, cmd) {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass if (cmd !== 'bidi') {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass editor.execCommand(cmd, '<b>Foo</b>');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass });
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var hc = inst.EditorSelection.hasCursor;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.EditorSelection.hasCursor = function() { return true };
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass Y.each(cmds, function(val, cmd) {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass if (cmd !== 'bidi' && cmd != 'insertandfocus') {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.execCommand(cmd, '<b>Foo</b>');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass }
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass });
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.EditorSelection.hasCursor = hc;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass editor.execCommand('insertandfocus', '<b>Foo</b>');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass editor.frame._execCommand('bold', '');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var SEL = inst.EditorSelection;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.EditorSelection = function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var sel = new SEL();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel.isCollapsed = false;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass return sel;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass };
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass for (var i in SEL) {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.EditorSelection[i] = SEL[i];
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass }
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass editor.execCommand('insertorderedlist', '');
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass inst.EditorSelection = SEL;
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass },
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 },
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');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass 'test: selection.remove()': function() {
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var inst = editor.getInstance(),
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel = new inst.EditorSelection();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass sel.remove();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_destroy: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.destroy();
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor iframe'), null, 'Frame was not destroyed');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_br_plugin: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor = new Y.EditorBase({
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass content: 'Hello <b>World</b>!!',
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass extracss: 'b { color: red; }'
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass });
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Second EditorBase instance can not be created');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.plug(Y.Plugin.EditorBR);
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.render('#editor');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorBR, editor.editorBR, 'EditorBR was not plugged..');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.set('content', '<br>');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass fireKey(editor, 13);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass fireKey(editor, 8);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.destroy();
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor iframe'), null, 'Second Frame was not destroyed');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_para_plugin: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor = new Y.EditorBase({
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass content: 'Hello <b>World</b>!!',
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass extracss: 'b { color: red; }'
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass });
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Third EditorBase instance can not be created');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.plug(Y.Plugin.EditorPara);
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorPara, editor.editorPara, 'EditorPara was not plugged..');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.render('#editor');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.set('content', '<br><b>Test This</b>');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass var inst = editor.getInstance();
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var str = '<b>foo</b>';
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = editor.frame.exec._wrapContent(str);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areEqual('<p><b>foo</b></p>', out);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = editor.frame.exec._wrapContent(str, true);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areEqual('<b>foo</b><br>', out);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass fireKey(editor, 13);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass fireKey(editor, 8);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.editorPara._fixFirstPara();
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass editor.editorPara._afterPaste();
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.editorPara._onNodeChange({
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass changedEvent: {},
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass changedNode: inst.one('b'),
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass changedType: 'enter-up'
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass });
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.editorPara._onNodeChange({
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass changedEvent: {},
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass changedNode: inst.one('br'),
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass changedType: 'enter'
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass });
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.destroy();
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor iframe'), null, 'Third Frame was not destroyed');
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_plug_setup: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor = new Y.EditorBase({
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass content: 'Hello <b>World</b>!!',
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass extracss: 'b { color: red; }'
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass });
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Forth EditorBase instance can not be created');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_plug: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.plug(Y.Plugin.EditorPara);
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass //This should error
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.plug(Y.Plugin.EditorBR);
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_down: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorPara, editor.editorPara, 'EditorPara was not plugged..');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.render('#editor');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.destroy();
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.areEqual(Y.one('#editor frame'), null, 'Forth Frame was not destroyed');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_plug_setup2: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor = new Y.EditorBase({
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass content: 'Hello <b>World</b>!!',
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass extracss: 'b { color: red; }'
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass });
008f8a72828325c3326b73e5d40abef1cdac4896Dav Glass Y.Assert.isInstanceOf(Y.EditorBase, editor, 'Fifth EditorBase instance can not be created');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_plug2: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.plug(Y.Plugin.EditorBR);
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass //This should error
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.plug(Y.Plugin.EditorPara);
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_down2: function() {
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorBR, editor.editorBR, 'EditorBR was not plugged..');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.render('#editor');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass editor.destroy();
008f8a72828325c3326b73e5d40abef1cdac4896Dav Glass Y.Assert.areEqual(Y.one('#editor frame'), null, 'Fifth Frame was not destroyed');
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass },
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass test_bidi_noplug: function() {
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass editor = new Y.EditorBase({
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass content: 'Hello <b>World</b>!!',
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass extracss: 'b { color: red; }'
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass });
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass editor.render('#editor');
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass this.wait(function() {
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass //This should error
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass editor.execCommand('bidi');
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass }, 1500);
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass },
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass test_bidi_plug: function() {
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.destroy();
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor = new Y.EditorBase({
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass content: 'Hello <b>World</b>!!',
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass extracss: 'b { color: red; }'
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass });
008f8a72828325c3326b73e5d40abef1cdac4896Dav Glass editor.plug(Y.Plugin.EditorPara);
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass editor.plug(Y.Plugin.EditorBidi);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass editor.render('#editor');
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass Y.Assert.isInstanceOf(Y.Plugin.EditorBidi, editor.editorBidi, 'EditorBidi plugin failed to load');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.focus(true);
55b12015bcdecf19f771f5387bc9b14af54da374Dav Glass
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass var inst = editor.getInstance();
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass var sel = new inst.EditorSelection();
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass var b = inst.one('b');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), '', 'Default direction');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass sel.selectNode(b, true, true);
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.execCommand('bidi');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), 'rtl', 'RTL not added to node');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass sel.selectNode(b, true, true);
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.execCommand('bidi');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), 'ltr', 'LTR not added to node');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass sel.selectNode(b, true, true);
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.execCommand('bidi');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass Y.Assert.areEqual(b.get('parentNode').get('dir'), 'rtl', 'RTL not added BACK to node');
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.editorBidi._afterMouseUp();
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass editor.editorBidi._afterNodeChange({
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass changedType: 'end-up'
460f50e26eefa1cc3d4ad5d7131bb8c17904664eDav Glass });
dc8b2d1d3b1cfe4b6971da2344e7f77671b4e553Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = Y.Plugin.EditorBidi.blockParent(inst.one('body').get('firstChild.firstChild'));
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.isTrue(out.test('p'));
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass var out = Y.Plugin.EditorBidi.addParents([inst.one('body').get('firstChild')]);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.areEqual(1, out.length);
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass Y.Assert.isTrue(out[0].test('p'));
1a7b879a771880e3288f4cef972ba76401119e21Dav Glass
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass },
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass _should: {
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass fail: {
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass 'test: EditorSelection': (Y.UA.chrome),
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass test_bidi_plug: (Y.UA.ie && Y.UA.ie === 9),
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)
eff9fa15f2fbdf22c5d33c82d48bd9d0ee0640abDav Glass
84e4fc4350d23a4c37b8d6a3f5ee4c131cacf5ddDav Glass },
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass error: { //These tests should error
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav Glass 'test: EditorSelection': (Y.UA.chrome),
3d106ceb5a28fc4b4a4bdd5885d06dd79ab385dbDav 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),
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass test_double_plug: true,
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass test_double_plug2: true,
d9925fd17da1983ab7b360768676d6253d831a86Dav Glass test_bidi_noplug: true
0db84e0da684308b0fd9ea9b5906c11bafa7a246Dav Glass }
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass }
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass };
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass var suite = new Y.Test.Suite("Editor");
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass suite.add(new Y.Test.Case(template));
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass Y.Test.Runner.add(suite);
fc2d50365b169f761de7a15d7a4fe406b33fd403Dav Glass
6a6a6d5448f8c49592581707a20e891abe577bfaDav Glass});