Henning Snater has uploaded a new change for review.

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

Change subject: Added snakview.value() QUnit tests
......................................................................

Added snakview.value() QUnit tests

As there is no use in returning "datavalue: null" in the Value variation, the 
"datavalue" field
is not returned at all anymore in order to achieve consistency of setting and 
getting the
snakview's value.

Change-Id: I63fa416beaad65a5d71ad739e8c18fc274788166
---
M lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
M lib/tests/qunit/jquery.wikibase/snakview/resources.php
M lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
3 files changed, 61 insertions(+), 10 deletions(-)


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

diff --git 
a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js 
b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
index e88f116..a4a6c72 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
@@ -70,10 +70,7 @@
                                dataValue = this._valueView.value();
                        }
 
-                       return {
-                               // null if no value yet or if value with no 
suitable valueview for
-                               datavalue: dataValue
-                       };
+                       return !dataValue ? {} : { datavalue: dataValue };
                },
 
                /**
diff --git a/lib/tests/qunit/jquery.wikibase/snakview/resources.php 
b/lib/tests/qunit/jquery.wikibase/snakview/resources.php
index 5d5a314..d3cf6d0 100644
--- a/lib/tests/qunit/jquery.wikibase/snakview/resources.php
+++ b/lib/tests/qunit/jquery.wikibase/snakview/resources.php
@@ -22,10 +22,14 @@
                                'snakview.tests.js',
                        ),
                        'dependencies' => array(
+                               'dataTypes.DataTypeStore',
                                'jquery.wikibase.snakview',
                                'mediawiki.Title',
                                'wikibase.datamodel.Fingerprint',
                                'wikibase.datamodel.Property',
+                               'wikibase.datamodel.PropertyNoValueSnak',
+                               'wikibase.datamodel.PropertySomeValueSnak',
+                               'wikibase.datamodel.PropertyValueSnak',
                                'wikibase.datamodel.Term',
                                'wikibase.datamodel.TermMap',
                                'wikibase.serialization.SnakSerializer',
diff --git a/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js 
b/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
index e0443e2..b8b83c4 100644
--- a/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/snakview/snakview.tests.js
@@ -2,7 +2,7 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-( function( $, QUnit, wb, mw ) {
+( function( $, QUnit, wb, dt, mw ) {
 'use strict';
 
 QUnit.module( 'jquery.wikibase.snakview', QUnit.newMwEnvironment( {
@@ -35,6 +35,8 @@
        }
 };
 
+var snakSerializer = new wb.serialization.SnakSerializer();
+
 /**
  * @param {Object} [options={}]
  * @param {jQuery} [$node]
@@ -44,7 +46,7 @@
        options = $.extend( {
                entityStore: entityStore,
                valueViewBuilder: 'I am a ValueViewBuilder',
-               dataTypeStore: 'I am a DataTypeStore'
+               dataTypeStore: new dt.DataTypeStore()
        }, options || {} );
 
        $node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -88,9 +90,7 @@
        );
 
        $snakview = createSnakview( {
-               value: ( new wb.serialization.SnakSerializer() ).serialize(
-                       new wb.datamodel.PropertyNoValueSnak( 'P1' )
-               )
+               value: snakSerializer.serialize( new 
wb.datamodel.PropertyNoValueSnak( 'P1' ) )
        } );
        snakview = $snakview.data( 'snakview' );
 
@@ -107,4 +107,54 @@
        );
 } );
 
-}( jQuery, QUnit, wikibase, mediaWiki ) );
+QUnit.test( 'value()', function( assert ) {
+       var $snakview = createSnakview(),
+               snakview = $snakview.data( 'snakview' );
+
+       assert.deepEqual(
+               snakview.value(),
+               {
+                       property: null,
+                       snaktype: wb.datamodel.PropertyValueSnak.TYPE
+               },
+               'Verified default value.'
+       );
+
+       var newValue = {
+               property: 'P1',
+               snaktype: wb.datamodel.PropertySomeValueSnak.TYPE
+       };
+
+       snakview.value( newValue );
+
+       assert.deepEqual(
+               snakview.value(),
+               newValue,
+               'Set Snak serialization value.'
+       );
+
+       newValue = new wb.datamodel.PropertyNoValueSnak( 'P1' );
+
+       snakview.value( newValue );
+
+       assert.deepEqual(
+               snakview.value(),
+               snakSerializer.serialize( newValue ),
+               'Set wikibase.datamodel.Snak value.'
+       );
+
+       newValue = {
+               property: 'P1',
+               snaktype: wb.datamodel.PropertyValueSnak.TYPE
+       };
+
+       snakview.value( newValue );
+
+       assert.deepEqual(
+               snakview.value(),
+               newValue,
+               'Set incomplete Snak serialization value.'
+       );
+} );
+
+}( jQuery, QUnit, wikibase, dataTypes, mediaWiki ) );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I63fa416beaad65a5d71ad739e8c18fc274788166
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