[MediaWiki-commits] [Gerrit] Introduce basic test for entityview, fix wrong template usage - change (mediawiki...Wikibase)

2014-10-21 Thread jenkins-bot (Code Review)
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)

2014-10-17 Thread Adrian Lang (Code Review)
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(
+