Henning Snater has uploaded a new change for review.

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

Change subject: Use wb.datamodel.Term in descriptionview
......................................................................

Use wb.datamodel.Term in descriptionview

Change-Id: I766b93ce6819d8905afb7109dbb4300b2d4450c9
---
M lib/resources/entityChangers/DescriptionsChanger.js
M lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
M lib/resources/jquery.wikibase/resources.php
M lib/tests/qunit/entityChangers/DescriptionsChanger.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.descriptionview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
M lib/tests/qunit/jquery.wikibase/resources.php
13 files changed, 106 insertions(+), 148 deletions(-)


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

diff --git a/lib/resources/entityChangers/DescriptionsChanger.js 
b/lib/resources/entityChangers/DescriptionsChanger.js
index 3ff5885..8642f7a 100644
--- a/lib/resources/entityChangers/DescriptionsChanger.js
+++ b/lib/resources/entityChangers/DescriptionsChanger.js
@@ -34,22 +34,22 @@
                _api: null,
 
                /**
-                * @param {string} description
-                * @param {string} language
+                * @param {wikibase.datamodel.Term} description
                 * @return {jQuery.Promise}
                 *         Resolved parameters:
                 *         - {string} The saved description
                 *         Rejected parameters:
                 *         - {wikibase.RepoApiError}
                 */
-               setDescription: function( description, language ) {
+               setDescription: function( description ) {
                        var self = this,
-                               deferred = $.Deferred();
+                               deferred = $.Deferred(),
+                               language = description.getLanguageCode();
 
                        this._api.setDescription(
                                this._entity.getId(),
                                this._revisionStore.getDescriptionRevision(),
-                               description,
+                               description.getText(),
                                language
                        )
                        .done( function( result ) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
index cb16fa7..965c124 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
@@ -12,9 +12,7 @@
  * @since 0.5
  * @extends jQuery.ui.TemplatedWidget
  *
- * @option {Object|null} value
- *         Object representing the widget's value.
- *         Structure: { language: <{string}>, description: <{string|null}> }
+ * @option {wikibase.datamodel.Term} value
  *
  * @option {string} [helpMessage]
  *         Default: mw.msg( 'wikibase-description-input-help-message' )
@@ -58,21 +56,21 @@
         * @throws {Error} if required parameters are not specified properly.
         */
        _create: function() {
-               if( !this.options.descriptionsChanger ) {
+               if(
+                       !( this.options.value instanceof wb.datamodel.Term )
+                       || !this.options.descriptionsChanger
+               ) {
                        throw new Error( 'Required parameter(s) missing' );
                }
 
-               this.options.value = this._checkValue( this.options.value );
-
-               var self = this,
-                       value = this.options.value;
+               var self = this;
 
                this.element
                .on(
                        'descriptionviewafterstartediting.' + this.widgetName
                        + ' eachchange.' + this.widgetName,
                function( event ) {
-                       if( !self.value().description ) {
+                       if( self.value().getText() === '' ) {
                                // Since the widget shall not be in view mode 
when there is no value, triggering
                                // the event without a proper value is only 
done when creating the widget. Disabling
                                // other edit buttons shall be avoided.
@@ -86,7 +84,7 @@
 
                PARENT.prototype._create.call( this );
 
-               if( value && value.description !== '' && this.$text.text() === 
'' ) {
+               if( this.options.value.getText() !== '' && this.$text.text() 
=== '' ) {
                        this._draw();
                }
        },
@@ -112,28 +110,30 @@
         * Main draw routine.
         */
        _draw: function() {
-               this.element[this.options.value.description ? 'removeClass' : 
'addClass']( 'wb-empty' );
+               var self = this,
+                       languageCode = this.options.value.getLanguageCode(),
+                       descriptionText = this.options.value.getText();
+
+               if( descriptionText === '' ) {
+                       descriptionText = null;
+               }
+
+               this.element[descriptionText ? 'removeClass' : 'addClass']( 
'wb-empty' );
 
                if( !this._isInEditMode ) {
-                       this.$text.text(
-                               this.options.value.description || mw.msg( 
'wikibase-description-empty' )
-                       );
+                       this.$text.text( descriptionText || mw.msg( 
'wikibase-description-empty' ) );
                        return;
                }
 
-               var self = this;
-
-               var langCode = this.options.value.language;
-
                var dir = ( $.uls && $.uls.data ) ?
-                       $.uls.data.getDir( langCode ) :
+                       $.uls.data.getDir( languageCode ) :
                        $( 'html' ).prop( 'dir' );
 
                var $input = $( '<input />', {
                        // TODO: Inject correct placeholder via options
                        placeholder: mw.msg(
                                
'wikibase-description-edit-placeholder-language-aware',
-                               wb.getNativeLanguageNameByCode( langCode )
+                               wb.getNativeLanguageNameByCode( languageCode )
                        ),
                        dir: dir
                } )
@@ -141,8 +141,8 @@
                        self._trigger( 'change' );
                } );
 
-               if( this.options.value.description ) {
-                       $input.val( this.options.value.description );
+               if( descriptionText ) {
+                       $input.val( descriptionText );
                }
 
                this.$text.empty().append( $input );
@@ -196,10 +196,7 @@
 
                this._trigger( 'stopediting', null, [dropValue] );
 
-               this.options.descriptionsChanger.setDescription(
-                       this.value().description || '',
-                       this.options.value.language
-               )
+               this.options.descriptionsChanger.setDescription( this.value() )
                .done( function( description ) {
                        self.enable();
                        self._afterStopEditing( dropValue );
@@ -225,7 +222,7 @@
        _afterStopEditing: function( dropValue ) {
                if( !dropValue ) {
                        this.options.value = this.value();
-               } else if( !this.options.value.description ) {
+               } else if( this.options.value.getText() === '' ) {
                        this.$text.children( 'input' ).val( '' );
                }
 
@@ -249,11 +246,7 @@
         * @return {boolean}
         */
        isInitialValue: function() {
-               var initialValue = this.options.value,
-                       currentValue = this.value();
-
-               return currentValue.language === initialValue.language
-                       && currentValue.description === 
initialValue.description;
+               return this.value().equals( this.options.value );
        },
 
        /**
@@ -279,8 +272,8 @@
         * @see jQuery.ui.TemplatedWidget._setOption
         */
        _setOption: function( key, value ) {
-               if( key === 'value' ) {
-                       value = this._checkValue( value );
+               if( key === 'value' && !( value instanceof wb.datamodel.Term ) 
) {
+                       throw new Error( 'Value needs to be a wb.datamodel.Term 
instance' );
                }
 
                var response = PARENT.prototype._setOption.call( this, key, 
value );
@@ -293,30 +286,10 @@
        },
 
        /**
-        * @param {*} value
-        * @return {Object}
-        *
-        * @throws {Error} if value is not defined properly.
-        */
-       _checkValue: function( value ) {
-               if( !$.isPlainObject( value ) ) {
-                       throw new Error( 'Value needs to be an object' );
-               } else if( !value.language ) {
-                       throw new Error( 'Value needs language to be specified' 
);
-               }
-
-               if( !value.description ) {
-                       value.description = null;
-               }
-
-               return value;
-       },
-
-       /**
         * Gets/Sets the widget's value.
         *
-        * @param {Object} [value]
-        * @return {Object|undefined}
+        * @param {wikibase.datamodel.Term} [value]
+        * @return {wikibase.datamodel.Term|undefined}
         */
        value: function( value ) {
                if( value !== undefined ) {
@@ -328,12 +301,10 @@
                        return this.option( 'value' );
                }
 
-               var text = $.trim( this.$text.children( 'input' ).val() );
-
-               return {
-                       language: this.options.value.language,
-                       description: text !== '' ? text : null
-               };
+               return new wb.datamodel.Term(
+                       this.options.value.getLanguageCode(),
+                       $.trim( this.$text.children( 'input' ).val() )
+               );
        },
 
        /**
@@ -378,7 +349,7 @@
                                }
                        } );
 
-                       if( !descriptionview.value().description ) {
+                       if( descriptionview.value().getText() === '' ) {
                                descriptionview.toEditMode();
                                $descriptionview.data( 'edittoolbar' 
).toEditMode();
                                $descriptionview.data( 'edittoolbar' 
).disable();
@@ -388,7 +359,7 @@
                        .off( 'descriptionviewafterstopediting.edittoolbar' )
                        .on( 'descriptionviewafterstopediting.edittoolbar', 
function( event ) {
                                var edittoolbar = $( event.target ).data( 
'edittoolbar' );
-                               if( descriptionview.value().description ) {
+                               if( descriptionview.value().getText() !== '' ) {
                                        edittoolbar.toNonEditMode();
                                        edittoolbar.enable();
                                        edittoolbar.toggleActionMessage( 
function() {
@@ -411,8 +382,8 @@
                                btnSave = edittoolbar.getButton( 'save' ),
                                enableSave = descriptionview.isValid() && 
!descriptionview.isInitialValue(),
                                btnCancel = edittoolbar.getButton( 'cancel' ),
-                               currentDescription = 
descriptionview.value().description,
-                               disableCancel = !currentDescription && 
descriptionview.isInitialValue();
+                               currentDescription = 
descriptionview.value().getText(),
+                               disableCancel = currentDescription === '' && 
descriptionview.isInitialValue();
 
                        btnSave[enableSave ? 'enable' : 'disable']();
                        btnCancel[disableCancel ? 'disable' : 'enable']();
@@ -420,7 +391,10 @@
                        if( event.type === 'descriptionviewchange' ) {
                                if( !descriptionview.isInitialValue() ) {
                                        descriptionview.startEditing();
-                               } else if( descriptionview.isInitialValue() && 
!descriptionview.value().description ) {
+                               } else if(
+                                       descriptionview.isInitialValue()
+                                       && descriptionview.value().getText() 
=== ''
+                               ) {
                                        descriptionview.cancelEditing();
                                }
                        }
@@ -431,15 +405,15 @@
                                edittoolbar = $descriptionview.data( 
'edittoolbar' ),
                                btnSave = edittoolbar.getButton( 'save' ),
                                enable = descriptionview.isValid() && 
!descriptionview.isInitialValue(),
-                               currentDescription = 
descriptionview.value().description;
+                               currentDescription = 
descriptionview.value().getText();
 
                        btnSave[enable ? 'enable' : 'disable']();
 
-                       if( descriptionview.option( 'disabled' ) || 
currentDescription ) {
+                       if( descriptionview.option( 'disabled' ) || 
currentDescription !== '' ) {
                                return;
                        }
 
-                       if( !currentDescription ) {
+                       if( currentDescription === '' ) {
                                edittoolbar.disable();
                        }
                },
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
index 180a651..3059d1c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -148,17 +148,13 @@
                        this.$description = $( '<div/>' ).appendTo( 
this.element );
                }
 
+               // FIXME: entity object should not contain fallback strings
                var description = 
this.options.value.getFingerprint().getDescriptionFor(
                        mw.config.get( 'wgUserLanguage' )
-               );
+               ) || new wb.datamodel.Term( mw.config.get( 'wgUserLanguage' ), 
'' );
+
                this.$description.descriptionview( {
-                       value: {
-                               language: mw.config.get( 'wgUserLanguage' ),
-                               description: this.$description.hasClass( 
'wb-empty' )
-                                       ? null
-                                       // FIXME: entity object should not 
contain fallback strings
-                                       : ( description && 
description.getText() )
-                       },
+                       value: description,
                        helpMessage: mw.msg(
                                'wikibase-description-input-help-message',
                                wb.getLanguageNameByCode( mw.config.get( 
'wgUserLanguage' ) )
@@ -207,19 +203,18 @@
                }
 
                var fingerprint = this.options.value.getFingerprint(),
-                       value = [],
-                       nextValue;
+                       value = [];
+
                for( var i = 0; i < this.options.languages.length; i++ ) {
-                       nextValue = {
+                       value.push( {
                                language: this.options.languages[i],
                                label: fingerprint.getLabelFor( 
this.options.languages[i] )
                                        || new wb.datamodel.Term( 
this.options.languages[i], '' ),
-                               description: fingerprint.getDescriptionFor( 
this.options.languages[i] ),
+                               description: fingerprint.getDescriptionFor( 
this.options.languages[i] )
+                                       || new wb.datamodel.Term( 
this.options.languages[i], '' ),
                                aliases: fingerprint.getAliasesFor( 
this.options.languages[i] )
                                        || new wb.datamodel.MultiTerm( 
this.options.languages[i], [] )
-                       };
-                       nextValue.description = nextValue.description ? 
nextValue.description.getText() : null;
-                       value.push( nextValue );
+                       } );
                }
 
                this.$fingerprints.fingerprintgroupview( {
diff --git 
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
index f8ad851..0f84ac0 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
@@ -18,7 +18,7 @@
  *           {
  *             language: <{string]>,
  *             label: <{wikibase.datamodel.Term}>,
- *             description: <{string|null}>
+ *             description: <{wikibase.datamodel.Term}>
  *             aliases: <{wikibase.datamodel.MultiTerm}>
  *           }[, ...]
  *         ]
diff --git 
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
index 6971644..ff7d87a 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
@@ -18,7 +18,7 @@
  *           {
  *             language: <{string]>,
  *             label: <{wikibase.datamodel.Term}>,
- *             description: <{string|null}>,
+ *             description: <{wikibase.datamodel.Term}>,
  *             aliases: <{wikibase.datamodel.MultiTerm}>
  *           }[, ...]
  *         ]
@@ -187,7 +187,7 @@
                        if(
                                currentValue[i].language !== 
this.options.value[i].language
                                || !currentValue[i].label.equals( 
this.options.value[i].label )
-                               || currentValue[i].description !== 
this.options.value[i].description
+                               || !currentValue[i].description.equals( 
this.options.value[i].description )
                                || !currentValue[i].aliases.equals( 
this.options.value[i].aliases )
                        ) {
                                return false;
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
index 9beb6a6..55c6613 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
@@ -17,7 +17,7 @@
  *         Structure: {
  *           language: <{string}>,
  *           label: <{wikibase.datamodel.Term}>,
- *           description: <{string|null>,
+ *           description: <{wikibase.datamodel.Term}>,
  *           aliases: <{wikibase.datamodel.MultiTerm}>
  *         }
  *
@@ -185,7 +185,7 @@
                        );
 
                        var options = {
-                               value: self.options.value,
+                               value: self.options.value[subjectName],
                                helpMessage: mw.msg(
                                        'wikibase-' + subjectName + 
'-input-help-message',
                                        wb.getLanguageNameByCode( 
self.options.value.language )
@@ -194,11 +194,9 @@
 
                        if( widgetName === 'aliasesview' ) {
                                options.aliasesChanger = 
self.options.entityChangersFactory.getAliasesChanger();
-                               options.value = self.options.value.aliases;
                        } else if ( widgetName === 'descriptionview' ) {
                                options.descriptionsChanger = 
self.options.entityChangersFactory.getDescriptionsChanger();
                        } else if ( widgetName === 'labelview' ) {
-                               options.value = self.options.value.label;
                                options.labelsChanger = 
self.options.entityChangersFactory.getLabelsChanger();
                                options.entityId = self.options.entityId;
                        }
@@ -354,7 +352,7 @@
                return {
                        language: this.options.value.language,
                        label: this.$labelview.data( 'labelview' ).value(),
-                       description: this.$descriptionview.data( 
'descriptionview' ).value().description,
+                       description: this.$descriptionview.data( 
'descriptionview' ).value(),
                        aliases: this.$aliasesview.data( 'aliasesview' ).value()
                };
        },
@@ -373,12 +371,7 @@
                        }
 
                        this.$labelview.data( 'labelview' ).option( 'value', 
value.label );
-
-                       this.$descriptionview.data( 'descriptionview' ).option( 
'value', {
-                               language: value.language,
-                               description: value.description
-                       } );
-
+                       this.$descriptionview.data( 'descriptionview' ).option( 
'value', value.description );
                        this.$aliasesview.data( 'aliasesview' ).option( 
'value', value.aliases );
                }
 
@@ -411,7 +404,7 @@
                }
 
                if( !value.description ) {
-                       value.description = null;
+                       throw new Error( 'description needs to be a 
wb.datamodel.Term instance' );
                }
 
                if( !value.aliases ) {
diff --git a/lib/resources/jquery.wikibase/resources.php 
b/lib/resources/jquery.wikibase/resources.php
index 2810e9a..9cdc5c3 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -135,6 +135,7 @@
                                'jquery.wikibase.edittoolbar',
                                'jquery.wikibase.toolbarcontroller',
                                'wikibase',
+                               'wikibase.datamodel.Term',
                        ),
                        'messages' => array(
                                'wikibase-description-edit-placeholder',
diff --git a/lib/tests/qunit/entityChangers/DescriptionsChanger.tests.js 
b/lib/tests/qunit/entityChangers/DescriptionsChanger.tests.js
index 7fab678..2fb7160 100644
--- a/lib/tests/qunit/entityChangers/DescriptionsChanger.tests.js
+++ b/lib/tests/qunit/entityChangers/DescriptionsChanger.tests.js
@@ -25,7 +25,7 @@
                var api = {
                        setDescription: sinon.spy( function() {
                                return $.Deferred().promise();
-                       } ),
+                       } )
                };
                var descriptionsChanger = new SUBJECT(
                        api,
@@ -33,7 +33,7 @@
                        new wb.datamodel.Item( 'Q1' )
                );
 
-               descriptionsChanger.setDescription( 'description', 'language' );
+               descriptionsChanger.setDescription( new wb.datamodel.Term( 
'language', 'description' ) );
 
                assert.ok( api.setDescription.calledOnce );
        } );
@@ -51,7 +51,7 @@
                                                }
                                        }
                                } ).promise();
-                       } ),
+                       } )
                };
                var descriptionsChanger = new SUBJECT(
                        api,
@@ -61,7 +61,7 @@
 
                QUnit.stop();
 
-               descriptionsChanger.setDescription( 'description', 'language' )
+               descriptionsChanger.setDescription( new wb.datamodel.Term( 
'language', 'description' ) )
                .done( function( savedDescription ) {
                        QUnit.start();
                        assert.equal( savedDescription, 'description' );
@@ -75,7 +75,7 @@
                var api = {
                        setDescription: sinon.spy( function() {
                                return $.Deferred().reject( 'errorCode', { 
error: { code: 'errorCode' } } ).promise();
-                       } ),
+                       } )
                };
                var descriptionsChanger = new SUBJECT(
                        api,
@@ -85,7 +85,7 @@
 
                QUnit.stop();
 
-               descriptionsChanger.setDescription( 'description', 'language' )
+               descriptionsChanger.setDescription( new wb.datamodel.Term( 
'language', 'description' ) )
                .done( function( savedDescription ) {
                        assert.ok( false, 'setDescription should have failed' );
                } )
diff --git 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.descriptionview.tests.js 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.descriptionview.tests.js
index 3fd14cf..1180cdb 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.descriptionview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.descriptionview.tests.js
@@ -2,7 +2,7 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-( function( $, QUnit ) {
+( function( $, wb, QUnit ) {
 'use strict';
 
 /**
@@ -15,10 +15,7 @@
                descriptionsChanger: {
                        setDescription: function () { return 
$.Deferred().resolve(); }
                },
-               value: {
-                       language: 'en',
-                       description: 'test description'
-               }
+               value: new wb.datamodel.Term( 'en', 'test description' )
        }, options || {} );
 
        $node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -156,36 +153,33 @@
 
 QUnit.test( 'value()', function( assert ) {
        var $descriptionview = createDescriptionview(),
-               descriptionview = $descriptionview.data( 'descriptionview' );
+               descriptionview = $descriptionview.data( 'descriptionview' ),
+               newValue = null;
 
        assert.throws(
                function() {
-                       descriptionview.value( null );
+                       descriptionview.value( newValue );
                },
                'Trying to set no value fails.'
        );
 
-       descriptionview.value( {
-               language: 'de',
-               description: 'changed description'
-       } );
+       newValue = new wb.datamodel.Term( 'de', 'changed description' );
+
+       descriptionview.value( newValue );
 
        assert.ok(
-               descriptionview.value().language === 'de'
-                       && descriptionview.value().description === 'changed 
description',
+               descriptionview.value().equals( newValue ),
                'Set new value.'
        );
 
-       descriptionview.value( {
-               language: 'en',
-               description: null
-       } );
+       newValue = new wb.datamodel.Term( 'en', '' );
+
+       descriptionview.value( newValue );
 
        assert.ok(
-               descriptionview.value().language === 'en'
-                       && descriptionview.value().description === null,
+               descriptionview.value().equals( newValue ),
                'Set another value.'
        );
 } );
 
-}( jQuery, QUnit ) );
+}( jQuery, wikibase, QUnit ) );
diff --git 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
index 485fabd..c43f67e 100644
--- 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
+++ 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
@@ -15,12 +15,12 @@
                        {
                                language: 'de',
                                label: new wb.datamodel.Term( 'de', 'de-label' 
),
-                               description: 'de-description',
+                               description: new wb.datamodel.Term( 'de', 
'de-description' ),
                                aliases: new wb.datamodel.MultiTerm( 'de', [] )
                        }, {
                                language: 'en',
                                label: new wb.datamodel.Term( 'en', 'en-label' 
),
-                               description: 'en-description',
+                               description: new wb.datamodel.Term( 'en', 
'en-description' ),
                                aliases: new wb.datamodel.MultiTerm( 'en', [] )
                        }
                ],
diff --git 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
index 0a25d27..b286060 100644
--- 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
+++ 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
@@ -21,12 +21,12 @@
                        {
                                language: 'de',
                                label: new wb.datamodel.Term( 'de', 'de-label' 
),
-                               description: 'de-description',
+                               description: new wb.datamodel.Term( 'de', 
'de-description' ),
                                aliases: new wb.datamodel.MultiTerm( 'de', [] )
                        }, {
                                language: 'en',
                                label: new wb.datamodel.Term( 'en', 'en-label' 
),
-                               description: 'en-description',
+                               description: new wb.datamodel.Term( 'en', 
'en-description' ),
                                aliases: new wb.datamodel.MultiTerm( 'en', [] )
                        }
                ]
@@ -91,7 +91,7 @@
        var $item = $fingerprintlistview.data( 'listview' ).addItem( {
                language: 'fa',
                label: new wb.datamodel.Term( 'fa', 'fa-label' ),
-               description: 'fa-description',
+               description: new wb.datamodel.Term( 'fa', 'fa-description' ),
                aliases: new wb.datamodel.MultiTerm( 'fa', [] )
        } );
 
diff --git 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
index 0976a7b..f23d8ba 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
@@ -29,7 +29,7 @@
                value: {
                        language: 'en',
                        label: new wb.datamodel.Term( 'en', 'test label' ),
-                       description: 'test description',
+                       description: new wb.datamodel.Term( 'en', 'test 
description' ),
                        aliases: new wb.datamodel.MultiTerm( 'en', ['alias1', 
'alias2'] )
                }
        }, options || {} );
@@ -247,6 +247,7 @@
        var $fingerprintview = createFingerprintview(),
                fingerprintview = $fingerprintview.data( 'fingerprintview' ),
                label = new wb.datamodel.Term( 'en', 'changed label' ),
+               description = new wb.datamodel.Term( 'en', 'test description' ),
                aliases = new wb.datamodel.MultiTerm( 'en', ['alias1', 
'alias2'] );
 
        assert.throws(
@@ -259,7 +260,7 @@
        fingerprintview.value( {
                language: 'en',
                label: label,
-               description: 'test description',
+               description: description,
                aliases: aliases
        } );
 
@@ -268,18 +269,18 @@
                'Set new label.'
        );
 
-       assert.equal(
-               fingerprintview.value().description,
-               'test description',
+       assert.ok(
+               fingerprintview.value().description.equals( description ),
                'Did not change description.'
        );
 
        label = new wb.datamodel.Term( 'en', 'test label' );
+       description = new wb.datamodel.Term( 'en', '' );
 
        fingerprintview.value( {
                language: 'en',
                label: label,
-               description: null,
+               description: description,
                aliases: aliases
        } );
 
@@ -288,9 +289,8 @@
                'Reset label.'
        );
 
-       assert.strictEqual(
-               fingerprintview.value().description,
-               null,
+       assert.ok(
+               fingerprintview.value().description.equals( description ),
                'Removed description.'
        );
 
@@ -299,7 +299,7 @@
        fingerprintview.value( {
                language: 'en',
                label: label,
-               description: null,
+               description: description,
                aliases: aliases
        } );
 
@@ -313,7 +313,7 @@
        fingerprintview.value( {
                language: 'en',
                label: label,
-               description: null,
+               description: description,
                aliases: aliases
        } );
 
@@ -327,7 +327,7 @@
                        fingerprintview.value( {
                                language: 'de',
                                label: label,
-                               description: null,
+                               description: description,
                                aliases: aliases
                        } );
                },
diff --git a/lib/tests/qunit/jquery.wikibase/resources.php 
b/lib/tests/qunit/jquery.wikibase/resources.php
index 7889923..071c68f 100644
--- a/lib/tests/qunit/jquery.wikibase/resources.php
+++ b/lib/tests/qunit/jquery.wikibase/resources.php
@@ -81,6 +81,7 @@
                        ),
                        'dependencies' => array(
                                'jquery.wikibase.descriptionview',
+                               'wikibase.datamodel.Term',
                        ),
                ),
 

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

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