summaryrefslogtreecommitdiff
path: root/extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js')
-rw-r--r--extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js274
1 files changed, 274 insertions, 0 deletions
diff --git a/extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js b/extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js
new file mode 100644
index 00000000..674b5e16
--- /dev/null
+++ b/extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js
@@ -0,0 +1,274 @@
+( function ( $ ) {
+ QUnit.module( 'ext.wikiEditor.toolbar', QUnit.newMwEnvironment( {
+ setup: function () {
+ var $fixture = $( '#qunit-fixture' );
+ var $target = $( '<textarea id="wpTextBox1">' );
+ this.$target = $target;
+ $fixture.append( $target );
+ $target.wikiEditor( 'addModule', 'toolbar' );
+ this.$ui = $target.data( 'wikiEditor-context' ).$ui;
+ }
+ } ) );
+
+ QUnit.test( 'Toolbars', 16, function ( assert ) {
+ // Add toolbar section
+ var data = {
+ sections: {
+ emoticons: {
+ type: 'toolbar',
+ label: 'Emoticons'
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section' ).length, 0, 'Before adding toolbar section' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section' ).length, 1, 'After adding toolbar section' );
+
+ // Add toolbar group
+ data = {
+ section: 'emoticons',
+ groups: {
+ faces: {
+ label: 'Faces'
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group' ).length, 0, 'Before adding toolbar group' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group' ).length, 1, 'After adding toolbar group' );
+
+ // Add button tool
+ data = {
+ section: 'emoticons',
+ group: 'faces',
+ tools: {
+ smile: {
+ label: 'Smile!',
+ type: 'button',
+ icon: 'http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Gnome-face-smile.svg/22px-Gnome-face-smile.svg.png',
+ action: {
+ type: 'encapsulate',
+ options: {
+ pre: ':)'
+ }
+ }
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="smile"].tool' ).length, 0, 'Before adding button' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="smile"].tool' ).length, 1, 'After adding button' );
+
+ // Remove button tool
+ data = {
+ section: 'emoticons',
+ group: 'faces',
+ tool: 'smile'
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="smile"].tool' ).length, 1, 'Before removing button' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="smile"].tool' ).length, 0, 'After removing button' );
+
+ // Add select tool
+ data = {
+ section: 'emoticons',
+ group: 'faces',
+ tools: {
+ icons: {
+ label: 'Icons',
+ type: 'select',
+ list: {
+ wink : {
+ label: 'Wink',
+ action: {
+ type: 'encapsulate',
+ options: {
+ pre: ';)'
+ }
+ }
+ },
+ frown : {
+ label: 'Frown',
+ action: {
+ type: 'encapsulate',
+ options: {
+ pre: ':('
+ }
+ }
+ },
+ bigSmile : {
+ label: 'Big smile',
+ action: {
+ type: 'encapsulate',
+ options: {
+ pre: ':D'
+ }
+ }
+ }
+ }
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="icons"].tool' ).length, 0, 'Before adding select' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="icons"].tool' ).length, 1, 'After adding select' );
+
+ // Remove select tool
+ data = {
+ section: 'emoticons',
+ group: 'faces',
+ tool: 'icons'
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="icons"].tool' ).length, 1, 'Before removing select' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group *[rel="icons"].tool' ).length, 0, 'After removing select' );
+
+ // Remove toolbar group
+ data = {
+ section: 'emoticons',
+ group: 'faces'
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group' ).length, 1, 'Before removing toolbar group' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section *[rel="faces"].group' ).length, 0, 'After removing toolbar group' );
+
+ // Remove toolbar section
+ data = {
+ section: 'emoticons'
+ };
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section' ).length, 1, 'Before removing toolbar section' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="emoticons"].section' ).length, 0, 'After removing toolbar section' );
+ } );
+
+ QUnit.test( 'Booklets', 20, function ( assert ) {
+ // Add booklet section
+ var data = {
+ sections: {
+ info: {
+ type: 'booklet',
+ label: 'Info'
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section' ).length, 0, 'Before adding booklet section' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section' ).length, 1, 'After adding booklet section' );
+
+ // Add table page
+ data = {
+ section: 'info',
+ pages: {
+ colors: {
+ layout: 'table',
+ label: 'Colors',
+ headings: [
+ { text: 'Name' },
+ { text: 'Temperature' },
+ { text: 'Swatch' }
+ ]
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page' ).length, 0, 'Before adding table page' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page' ).length, 1, 'After adding table page' );
+
+ // Add table rows
+ data = {
+ section: 'info',
+ page: 'colors',
+ rows: [
+ {
+ name: { text: 'Red' },
+ temp: { text: 'Warm' },
+ swatch: { html: '<div style="width: 10px; height: 10px; background-color: red;">' }
+ },
+ {
+ name: { text: 'Blue' },
+ temp: { text: 'Cold' },
+ swatch: { html: '<div style="width: 10px; height: 10px; background-color: blue;">' }
+ },
+ {
+ name: { text: 'Silver' },
+ temp: { text: 'Neutral' },
+ swatch: { html: '<div style="width: 10px; height: 10px; background-color: silver;">' }
+ }
+ ]
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page tr td' ).length, 0, 'Before adding table rows' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page tr td' ).length, 9, 'After adding table rows' );
+
+ // Remove table row
+ data = {
+ section: 'info',
+ page: 'colors',
+ row: 0
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page tr td' ).length, 9, 'Before removing table row' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page tr td' ).length, 6, 'After removing table row' );
+
+ // Remove table page
+ data = {
+ section: 'info',
+ page: 'colors'
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page' ).length, 1, 'Before removing table page' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="colors"].page' ).length, 0, 'After removing table page' );
+
+ // Add character page
+ data = {
+ section: 'info',
+ pages: {
+ emoticons: {
+ layout: 'characters',
+ label: 'Emoticons'
+ }
+ }
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page' ).length, 0, 'Before adding character page' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page' ).length, 1, 'After adding character page' );
+
+ // Add characters
+ data = {
+ section: 'info',
+ page: 'emoticons',
+ characters: [ ':)', ':))', ':(', '<3', ';)' ]
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page *[rel=":))"]' ).length, 0, 'Before adding characters' );
+ this.$target.wikiEditor( 'addToToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page *[rel=":))"]' ).length, 1, 'After adding characters' );
+
+ // Remove character
+ data = {
+ section: 'info',
+ page: 'emoticons',
+ character: ':))'
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page *[rel=":))"]' ).length, 1, 'Before removing character' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page *[rel=":))"]' ).length, 0, 'After removing character' );
+
+ // Remove character page
+ data = {
+ section: 'info',
+ page: 'emoticons'
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page' ).length, 1, 'Before removing character page' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section *[rel="emoticons"].page' ).length, 0, 'After removing character page' );
+
+ // Remove booklet section
+ data = {
+ section: 'info'
+ };
+ assert.equal( this.$ui.find( '*[rel="info"].section' ).length, 1, 'Before removing booklet section' );
+ this.$target.wikiEditor( 'removeFromToolbar', data );
+ assert.equal( this.$ui.find( '*[rel="info"].section' ).length, 0, 'After removing booklet section' );
+ } );
+
+}( jQuery ) );