Henning Snater has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/186955

Change subject: Added basic snakview QUnit tests
......................................................................

Added basic snakview QUnit tests

Change-Id: Ib1a9c7e350aba2d9ca025352ef1e65ad11fa0539
---
M lib/tests/qunit/jquery.wikibase/resources.php
A lib/tests/qunit/jquery.wikibase/snakview/resources.php
A lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
3 files changed, 150 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/55/186955/1

diff --git a/lib/tests/qunit/jquery.wikibase/resources.php 
b/lib/tests/qunit/jquery.wikibase/resources.php
index 001db94..5492573 100644
--- a/lib/tests/qunit/jquery.wikibase/resources.php
+++ b/lib/tests/qunit/jquery.wikibase/resources.php
@@ -308,6 +308,7 @@
 
        return array_merge(
                $modules,
+               include( __DIR__ . '/snakview/resources.php' ),
                include( __DIR__ . '/toolbar/resources.php' )
        );
 
diff --git a/lib/tests/qunit/jquery.wikibase/snakview/resources.php 
b/lib/tests/qunit/jquery.wikibase/snakview/resources.php
new file mode 100644
index 0000000..5d5a314
--- /dev/null
+++ b/lib/tests/qunit/jquery.wikibase/snakview/resources.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * @licence GNU GPL v2+
+ * @author H. Snater < mediaw...@snater.com >
+ *
+ * @codeCoverageIgnoreStart
+ */
+return call_user_func( function() {
+
+       $remoteExtPathParts = explode(
+               DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR, 
__DIR__, 2
+       );
+       $moduleTemplate = array(
+               'localBasePath' => __DIR__,
+               'remoteExtPath' => $remoteExtPathParts[1],
+       );
+
+       $resources = array(
+
+               'jquery.wikibase.snakview.tests' => $moduleTemplate + array(
+                       'scripts' => array(
+                               'snakview.tests.js',
+                       ),
+                       'dependencies' => array(
+                               'jquery.wikibase.snakview',
+                               'mediawiki.Title',
+                               'wikibase.datamodel.Fingerprint',
+                               'wikibase.datamodel.Property',
+                               'wikibase.datamodel.Term',
+                               'wikibase.datamodel.TermMap',
+                               'wikibase.serialization.SnakSerializer',
+                               'wikibase.store.FetchedContent',
+                       ),
+               ),
+
+       );
+
+       return $resources;
+} );
diff --git a/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js 
b/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
new file mode 100644
index 0000000..e0443e2
--- /dev/null
+++ b/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
@@ -0,0 +1,110 @@
+/**
+ * @licence GNU GPL v2+
+ * @author H. Snater < mediaw...@snater.com >
+ */
+( function( $, QUnit, wb, mw ) {
+'use strict';
+
+QUnit.module( 'jquery.wikibase.snakview', QUnit.newMwEnvironment( {
+       teardown: function() {
+               $( '.test_snakview' ).each( function() {
+                       var $snakview = $( this ),
+                               snakview = $snakview.data( 'snakview' );
+
+                       if( snakview ) {
+                               snakview.destroy();
+                       }
+
+                       $snakview.remove();
+               } );
+       }
+} ) );
+
+var entityStore = {
+       get: function() {
+               return $.Deferred().resolve( new wb.store.FetchedContent( {
+                       title: new mw.Title( 'Property:P1' ),
+                       content: new wb.datamodel.Property(
+                               'P1',
+                               'string',
+                               new wb.datamodel.Fingerprint( new 
wb.datamodel.TermMap( [
+                                       new wb.datamodel.Term( 'en', 'P1' )
+                               ] ) )
+                       )
+               } ) );
+       }
+};
+
+/**
+ * @param {Object} [options={}]
+ * @param {jQuery} [$node]
+ * @return {jQuery}
+ */
+var createSnakview = function( options, $node ) {
+       options = $.extend( {
+               entityStore: entityStore,
+               valueViewBuilder: 'I am a ValueViewBuilder',
+               dataTypeStore: 'I am a DataTypeStore'
+       }, options || {} );
+
+       $node = $node || $( '<div/>' ).appendTo( 'body' );
+
+       return $node
+               .addClass( 'test_snakview' )
+               .snakview( options );
+};
+
+QUnit.test( 'Create & destroy', function( assert ) {
+       var $snakview = createSnakview(),
+               snakview = $snakview.data( 'snakview' );
+
+       assert.ok(
+               snakview instanceof $.wikibase.snakview,
+               'Created widget.'
+       );
+
+       snakview.destroy();
+
+       assert.ok(
+               $snakview.data( 'snakview' ) === undefined,
+               'Destroyed widget.'
+       );
+
+       $snakview = createSnakview( {
+               value: new wb.datamodel.PropertyNoValueSnak( 'P1' )
+       } );
+       snakview = $snakview.data( 'snakview' );
+
+       assert.ok(
+               snakview !== undefined,
+               'Created widget passing a wikibase.datamodel.Snak object.'
+       );
+
+       snakview.destroy();
+
+       assert.ok(
+               $snakview.data( 'snakview' ) === undefined,
+               'Destroyed widget.'
+       );
+
+       $snakview = createSnakview( {
+               value: ( new wb.serialization.SnakSerializer() ).serialize(
+                       new wb.datamodel.PropertyNoValueSnak( 'P1' )
+               )
+       } );
+       snakview = $snakview.data( 'snakview' );
+
+       assert.ok(
+               snakview !== undefined,
+               'Created widget passing a Snak serialization.'
+       );
+
+       snakview.destroy();
+
+       assert.ok(
+               $snakview.data( 'snakview' ) === undefined,
+               'Destroyed widget.'
+       );
+} );
+
+}( jQuery, QUnit, wikibase, mediaWiki ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/186955
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib1a9c7e350aba2d9ca025352ef1e65ad11fa0539
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to