Ticket #3041: test-colorbutton-states.patch

File test-colorbutton-states.patch, 3.9 KB (added by Garry Yao, 10 years ago)
  • _source/tests/plugins/colorbutton/colorbutton.html

     
     1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2<html xmlns="http://www.w3.org/1999/xhtml">
     3<head>
     4        <title>Plugin: colorButton</title>
     5        <link rel="stylesheet" type="text/css" href="../../test.css" />
     6        <script type="text/javascript" src="../../../../ckeditor_source.js"></script>
     7        <script type="text/javascript" src="../../test.js"></script>
     8        <script type="text/javascript">
     9        //<![CDATA[
     10/**
     11 * Load the editor and wait for fully interactable.
     12 * @param {Object} elementId
     13 * @parma {Object} mode
     14 * @param {Object} config
     15 * @param {Object} callback Continuation with {@param editor}.
     16 * @param {Object} context
     17 */
     18function prepareEditor( elementId, mode, config, callback, context )
     19{
     20        CKEDITOR.on( 'instanceReady',
     21        function( evt )
     22        {
     23                var isMe = mode == CKEDITOR.ELEMENT_MODE_REPLACE ?
     24                        evt.editor.name == elementId
     25                    : evt.editor.element.$ ==
     26                        document.getElementById( elementId );
     27                if ( isMe )
     28                {
     29                        callback.call( context, evt.editor );
     30                }
     31        }, this );
     32
     33        mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;
     34        switch( mode )
     35        {
     36                case CKEDITOR.ELEMENT_MODE_REPLACE :
     37                        CKEDITOR.replace( elementId, config );
     38                        break;
     39                case CKEDITOR.ELEMENT_MODE_APPENDTO :
     40                        CKEDITOR.appendTo( elementId, config );
     41                        break;
     42        }
     43}
     44
     45/**
     46 * Find the specific UI item by row and column index.
     47 * @param {Object} editor
     48 * @param {Object} rowIndex
     49 * @param {Object} colIndex
     50 */
     51function getToolbarUIItem( editor, rowIndex, colIndex){
     52        return editor.toolbox.toolbars[ rowIndex -1].items[ colIndex-1];
     53}
     54
     55CKEDITOR.test.addTestCase( ( function()
     56    {
     57           
     58            // Local references.
     59            var assert = CKEDITOR.test.assert,
     60                        doc = CKEDITOR.document,
     61                        action = YAHOO.util.UserAction,
     62                        selector = YAHOO.util.Selector;
     63                       
     64            return      {
     65                       
     66                /**
     67                         * Test panel button state correctness when apply both 'bgColor' and 'textColor'.
     68                         */
     69                test_applyColor : function()
     70                        {
     71                                prepareEditor( 'editor1', null, null, function( editor )
     72                                    {
     73                                            this.resume( function()
     74                                            {
     75                                                    editor.focus();
     76                                                       
     77                                                    var bgColorItem = getToolbarUIItem( editor, 11,  1 );
     78                                                        // Open color panel
     79                                                    action.click( bgColorItem.id );
     80                                                        var colorPanelFrame = selector.query( '.cke_panel iframe', null, true );
     81                                                        // Pickup color
     82                                                        var colorBox = selector.query( '.cke_panel_block table td:first-child a',
     83                                                                colorPanelFrame.contentWindow.document, true );
     84                                                    action.click( colorBox );
     85                                                       
     86                                                        assert.isFalse( doc.getById( bgColorItem.id ).hasClass( 'cke_on' ) ,
     87                                                        'TextColor button state doesn\'t match.' );
     88
     89                                                    bgColorItem = getToolbarUIItem( editor, 11,  2 );
     90                                                        // Open color panel
     91                                                    action.click( bgColorItem.id );
     92                                                        colorPanelFrame = selector.query( '.cke_panel iframe', null, true );
     93                                                        // Pickup color
     94                                                        colorBox = selector.query( '.cke_panel_block table td:first-child a',
     95                                                                colorPanelFrame.contentWindow.document, true );
     96                                                    action.click( colorBox );
     97                                                       
     98                                                        assert.isFalse( doc.getById( bgColorItem.id ).hasClass( 'cke_on' ) ,
     99                                                        'BgColor button state doesn\'t match.' );
     100                                                       
     101                                            } );
     102                                    }, this );
     103                                    this.wait();               
     104                        },
     105
     106                name :document.title
     107            };
     108    } )() );
     109        //]]>
     110        </script>
     111</head>
     112<body>
     113        <textarea id="editor1" name="editor1"></textarea>
     114</body>
     115</html>
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy