[MediaWiki-commits] [Gerrit] Introduce basic test for entityview, fix wrong template usage - change (mediawiki...Wikibase)
jenkins-bot has submitted this change and it was merged. Change subject: Introduce basic test for entityview, fix wrong template usage .. Introduce basic test for entityview, fix wrong template usage Change-Id: I69845b66cc8a670d85d470bc8cc6b88263628a46 --- M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js A lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js M lib/tests/qunit/jquery.wikibase/resources.php 3 files changed, 96 insertions(+), 4 deletions(-) Approvals: Henning Snater: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js index 1272bd6..bd96848 100644 --- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js +++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js @@ -112,10 +112,11 @@ // TODO: Allow initializing entitview on empty DOM this.$label = $( '.wb-firstHeading .wikibase-labelview', this.element ).first(); if( !this.$label.length ) { - this.$label = mw.template( 'wikibase-h1', - this.options.value.getId(), - $( 'div/' ) - ).appendTo( this.element ); + this.$label = $( 'div/' ); + mw.template( 'wikibase-firstHeading', + this.options.value.getId(), + this.$label + ).appendTo( this.element ); } this.$label.labelview( { diff --git a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js new file mode 100644 index 000..bff407d --- /dev/null +++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js @@ -0,0 +1,81 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang adrian.l...@wikimedia.de + */ + +( function( $, wb, QUnit ) { +'use strict'; + +/** + * @param {Object} [options] + * @param {jQuery} [$node] + * @return {jQuery} + */ +var createEntityview = function( options, $node ) { + options = $.extend( { + entityStore: 'i am an entity store', + api: 'i am an api', + valueViewBuilder: 'i am a valueview builder', + value: new wb.datamodel.Item( { + id: 'Q1', + type: 'item' + } ) // FIXME: value is optional according to doc + }, options || {} ); + + $node = $node || $( 'div/' ).appendTo( 'body' ); + + var $entityview = $node + .addClass( 'test_entityview' ) + .entityview( options ); + + $entityview.data( 'entityview' )._save = function() { + return $.Deferred().resolve( { + entity: { + lastrevid: 'i am a revision id' + } + } ).promise(); + }; + + return $entityview; +}; + +QUnit.module( 'jquery.wikibase.entityview', QUnit.newMwEnvironment( { + teardown: function() { + $( '.test_entityview' ).each( function() { + var $entityview = $( this ), + entityview = $entityview.data( 'entityview' ); + + if( entityview ) { + entityview.destroy(); + } + + $entityview.remove(); + } ); + } +} ) ); + +QUnit.test( 'Create destroy', function( assert ) { + assert.throws( + function() { + createEntityview( { value: null } ); + }, + 'Throwing error when trying to initialize widget without a value.' + ); + + var $entityview = createEntityview(), + entityview = $entityview.data( 'entityview' ); + + assert.ok( + entityview !== 'undefined', + 'Created widget.' + ); + + entityview.destroy(); + + assert.ok( + $entityview.data( 'entityview' ) === undefined, + 'Destroyed widget.' + ); +} ); + +}( jQuery, wikibase, QUnit ) ); diff --git a/lib/tests/qunit/jquery.wikibase/resources.php b/lib/tests/qunit/jquery.wikibase/resources.php index 44b5247..2117cc8 100644 --- a/lib/tests/qunit/jquery.wikibase/resources.php +++ b/lib/tests/qunit/jquery.wikibase/resources.php @@ -75,6 +75,16 @@ ), ), + 'jquery.wikibase.entityview.tests' = $moduleBase + array( + 'scripts' = array( + 'jquery.wikibase.entityview.tests.js', + ), + 'dependencies' = array( +
[MediaWiki-commits] [Gerrit] Introduce basic test for entityview, fix wrong template usage - change (mediawiki...Wikibase)
Adrian Lang has uploaded a new change for review. https://gerrit.wikimedia.org/r/167204 Change subject: Introduce basic test for entityview, fix wrong template usage .. Introduce basic test for entityview, fix wrong template usage Change-Id: I69845b66cc8a670d85d470bc8cc6b88263628a46 --- M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js A lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js M lib/tests/qunit/jquery.wikibase/resources.php 3 files changed, 93 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/04/167204/1 diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js index 1272bd6..bd96848 100644 --- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js +++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js @@ -112,10 +112,11 @@ // TODO: Allow initializing entitview on empty DOM this.$label = $( '.wb-firstHeading .wikibase-labelview', this.element ).first(); if( !this.$label.length ) { - this.$label = mw.template( 'wikibase-h1', - this.options.value.getId(), - $( 'div/' ) - ).appendTo( this.element ); + this.$label = $( 'div/' ); + mw.template( 'wikibase-firstHeading', + this.options.value.getId(), + this.$label + ).appendTo( this.element ); } this.$label.labelview( { diff --git a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js new file mode 100644 index 000..2de4a59 --- /dev/null +++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js @@ -0,0 +1,78 @@ +/** + * @licence GNU GPL v2+ + * @author Adrian Lang adrian.l...@wikimedia.de + */ + +( function( $, wb, QUnit ) { +'use strict'; + +/** + * @param {Object} [options] + * @param {jQuery} [$node] + * @return {jQuery} + */ +var createEntityview = function( options, $node ) { + options = $.extend( { + entityStore: 'i am an entity store', + api: 'i am an api', + valueViewBuilder: 'i am a valueview builder', + value: new wb.datamodel.Item( 'Q1' ) // FIXME: value is optional according to doc + }, options || {} ); + + $node = $node || $( 'div/' ).appendTo( 'body' ); + + var $entityview = $node + .addClass( 'test_entityview' ) + .entityview( options ); + + $entityview.data( 'entityview' )._save = function() { + return $.Deferred().resolve( { + entity: { + lastrevid: 'i am a revision id' + } + } ).promise(); + }; + + return $entityview; +}; + +QUnit.module( 'jquery.wikibase.entityview', QUnit.newMwEnvironment( { + teardown: function() { + $( '.test_entityview' ).each( function() { + var $entityview = $( this ), + entityview = $entityview.data( 'entityview' ); + + if( entityview ) { + entityview.destroy(); + } + + $entityview.remove(); + } ); + } +} ) ); + +QUnit.test( 'Create destroy', function( assert ) { + assert.throws( + function() { + createEntityview( { value: null } ); + }, + 'Throwing error when trying to initialize widget without a value.' + ); + + var $entityview = createEntityview(), + entityview = $entityview.data( 'entityview' ); + + assert.ok( + entityview !== 'undefined', + 'Created widget.' + ); + + entityview.destroy(); + + assert.ok( + $entityview.data( 'entityview' ) === undefined, + 'Destroyed widget.' + ); +} ); + +}( jQuery, wikibase, QUnit ) ); diff --git a/lib/tests/qunit/jquery.wikibase/resources.php b/lib/tests/qunit/jquery.wikibase/resources.php index 44b5247..2117cc8 100644 --- a/lib/tests/qunit/jquery.wikibase/resources.php +++ b/lib/tests/qunit/jquery.wikibase/resources.php @@ -75,6 +75,16 @@ ), ), + 'jquery.wikibase.entityview.tests' = $moduleBase + array( + 'scripts' = array( + 'jquery.wikibase.entityview.tests.js', + ), + 'dependencies' = array( +