Ticket #3033: 3033.patch

File 3033.patch, 5.5 KB (added by Garry Yao, 13 years ago)
  • _source/tests/core/editor.html

     
    1414{
    1515        // Local reference to the "assert" object.
    1616        var assert = CKEDITOR.test.assert;
     17       
     18        /**
     19         * Load the editor and wait for fully interactable.
     20         * @param {Object} elementId
     21         * @parma {Object} mode
     22         * @param {Object} config
     23         * @param {Object} callback Continuation with {@param editor}.
     24         * @param {Object} context
     25         */
     26        function prepareEditor( elementId, mode, config, callback, context )
     27        {
     28                CKEDITOR.on( 'instanceReady',
     29                function( evt )
     30                {
     31                        var isMe = mode == CKEDITOR.ELEMENT_MODE_REPLACE ?
     32                                evt.editor.name == elementId
     33                            : evt.editor.element.$ ==
     34                                document.getElementById( elementId );
     35                        if ( isMe )
     36                        {
     37                                callback.call( context, evt.editor );
     38                        }
     39                }, this );
     40
     41                mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;
     42                switch( mode )
     43                {
     44                        case CKEDITOR.ELEMENT_MODE_REPLACE :
     45                                CKEDITOR.replace( elementId, config );
     46                                break;
     47                        case CKEDITOR.ELEMENT_MODE_APPENDTO :
     48                                CKEDITOR.appendTo( elementId, config );
     49                                break;
     50                }
     51        }
    1752
    1853        return {
    1954                test_name : function()
     
    90125                        this.wait();
    91126                },
    92127
     128            /**
     129                 * Test insertHtml on two modes.
     130                 */
     131            test_insertHtml1 : function()
     132            {
     133                    prepareEditor( 'editor4', null, null, function( editor )
     134                    {
     135                            this.resume( function()
     136                            {
     137                                    var htmlData = '<table><tr><td>text</td></tr></table>';
     138                                   
     139                                    // wysiwyg mode
     140                                    editor.focus();
     141                                    editor.insertHtml( htmlData );
     142                                    assert.areSame( '<table><tbody><tr><td>text</td></tr></tbody></table>',
     143                                        editor.getSnapshot() );
     144
     145                                    // source mode
     146                                    // sync
     147                                    editor.setMode( 'source' );
     148                                    editor.setData( '' );
     149                                    editor.insertHtml( htmlData );
     150                                    assert.areSame( '', editor.getSnapshot() );
     151                            } );
     152                    }, this );
     153                    this.wait();
     154            },
     155
     156            /**
     157                 * Test insertElement on two modes.
     158                 */
     159            test_insertElement : function()
     160            {
     161                    prepareEditor( 'editor5', null, null,
     162                        function( editor )
     163                        {
     164                                this.resume( function()
     165                                    {
     166
     167                                            var element = CKEDITOR.dom.element
     168                                                .createFromHtml( '<table><tr><td>text</td></tr></table>' ),
     169                                               expected = '<table><tbody><tr><td>text</td></tr></tbody></table>';
     170                                            // wysiwyg mode
     171                                            editor.focus();
     172                                            editor.insertElement( element );
     173
     174                                            // Fix enterMode
     175                                            expected += '<br>';
     176                                            assert.areSame( expected, editor.getSnapshot() );
     177
     178                                            // source mode
     179                                            // sync
     180                                            editor.setMode( 'source' );
     181                                            editor.setData( '' );
     182                                            editor.insertElement( element );
     183                                            assert.areSame( '', editor.getSnapshot() );
     184                                    } );
     185                        }, this );
     186                    this.wait();
     187            },
     188
     189            /**
     190                 * Test destroy editor created by replacement.
     191                 */
     192            test_destroy1 : function()
     193            {
     194                    prepareEditor( 'editor6', null, null, function( editor )
     195                    {
     196                            this.resume( function()
     197                            {
     198                                    var loadedContent = 'content';
     199                                    var editorThemeId = 'cke_' + editor.name;
     200                                    var editorElement = editor.element;
     201                                    editor.loadSnapshot( loadedContent );
     202                                    editor.destroy();
     203                                    assert.isUndefined( CKEDITOR.instances[ editor.name ] );
     204                                    assert.isNull( document.getElementById( editorThemeId ) );
     205                                    assert.areSame( loadedContent, document
     206                                        .getElementById( 'editor6' ).value,
     207                                        'Content of element should get updated.' );
     208                                    assert.areNotSame( 'none', editorElement
     209                                        .getComputedStyle( 'display' ) );
     210                            } );
     211                    }, this );
     212                    this.wait();
     213            },
     214
     215            /**
     216             * Test destroy editor created by replacement.
     217             */
     218            test_destroy2 : function()
     219            {
     220                    var element = CKEDITOR.document.getById( 'editor7' );
     221                    var content = element.getHtml();
     222                    prepareEditor( 'editor7',
     223                        CKEDITOR.ELEMENT_MODE_APPENDTO, null,
     224                        function( editor )
     225                        {
     226                                this.resume( function()
     227                                    {
     228                                            var editorThemeId = 'cke_' + editor.name;
     229                                            var editorElement = editor.element;
     230                                            editor.destroy();
     231                                            assert.isUndefined( CKEDITOR.instances[ editor.name ] );
     232                                            assert.isNull( document.getElementById( editorThemeId ) );
     233                                            assert.areSame( content,
     234                                                document.getElementById( 'editor7' ).innerHTML,
     235                                                'Original content of element should be restored.' );
     236                                    } );
     237                        }, this );
     238                    this.wait();
     239            },
     240               
    93241                name : document.title
    94242        };
    95243})() );
     
    101249        <textarea id="editor1" class="ckeditor" cols="80" rows="10"></textarea>
    102250        <textarea id="editor2" cols="80" rows="10"></textarea>
    103251        <textarea id="editor3" cols="80" rows="10"></textarea>
     252        <textarea id="editor4" name="editor4"></textarea>
     253        <textarea id="editor5" name="editor5"></textarea>
     254        <textarea id="editor6" name="editor6"></textarea>
     255        <div id="editor7">text</div>
    104256</body>
    105257</html>
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy