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