jenkins-bot has submitted this change and it was merged.

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


Use wb.datamodel.Term in labelview

Change-Id: Idd48d792d84b84c4a5f5bf82e5c2f6943b910b0c
---
M lib/resources/entityChangers/LabelsChanger.js
M lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.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/jquery.wikibase.labelview.js
M lib/resources/jquery.wikibase/resources.php
M lib/tests/qunit/entityChangers/LabelsChanger.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/jquery.wikibase.labelview.tests.js
M lib/tests/qunit/jquery.wikibase/resources.php
M repo/resources/wikibase.ui.entityViewInit.js
15 files changed, 129 insertions(+), 169 deletions(-)

Approvals:
  Adrian Lang: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/resources/entityChangers/LabelsChanger.js 
b/lib/resources/entityChangers/LabelsChanger.js
index 311c64e..8da2865 100644
--- a/lib/resources/entityChangers/LabelsChanger.js
+++ b/lib/resources/entityChangers/LabelsChanger.js
@@ -34,22 +34,22 @@
                _api: null,
 
                /**
-                * @param {string} label
-                * @param {string} language
+                * @param {wikibase.datamodel.Term} label
                 * @return {jQuery.Promise}
                 *         Resolved parameters:
                 *         - {string} The saved label
                 *         Rejected parameters:
                 *         - {wikibase.RepoApiError}
                 */
-               setLabel: function( label, language ) {
+               setLabel: function( label ) {
                        var self = this,
-                               deferred = $.Deferred();
+                               deferred = $.Deferred(),
+                               language = label.getLanguageCode();
 
                        this._api.setLabel(
                                this._entity.getId(),
                                this._revisionStore.getLabelRevision(),
-                               label,
+                               label.getText(),
                                language
                        )
                        .done( function( result ) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
index 416ba83..f94ded8 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
@@ -52,7 +52,7 @@
         */
        _create: function() {
                if(
-                       !( this.options.value instanceof 
wikibase.datamodel.MultiTerm )
+                       !( this.options.value instanceof wb.datamodel.MultiTerm 
)
                        || !this.options.aliasesChanger
                ) {
                        throw new Error( 'Required option(s) missing' );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
index 1ab98e6..82a7dfe 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -125,17 +125,13 @@
                        ).appendTo( this.element );
                }
 
+               // FIXME: entity object should not contain fallback strings
                var label = this.options.value.getFingerprint().getLabelFor(
                        mw.config.get( 'wgUserLanguage' )
-               );
+               ) || new wb.datamodel.Term( mw.config.get( 'wgUserLanguage' ), 
'' );
+
                this.$label.labelview( {
-                       value: {
-                               language: mw.config.get( 'wgUserLanguage' ),
-                               label: this.$label.hasClass( 'wb-empty' )
-                                       ? null
-                                       // FIXME: entity object should not 
contain fallback strings
-                                       : ( label && label.getText() )
-                       },
+                       value: label,
                        helpMessage: mw.msg(
                                'wikibase-description-input-help-message',
                                wb.getLanguageNameByCode( mw.config.get( 
'wgUserLanguage' ) )
@@ -216,12 +212,12 @@
                for( var i = 0; i < this.options.languages.length; i++ ) {
                        nextValue = {
                                language: this.options.languages[i],
-                               label: fingerprint.getLabelFor( 
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] ),
                                aliases: fingerprint.getAliasesFor( 
this.options.languages[i] )
                                        || new wb.datamodel.MultiTerm( 
this.options.languages[i], [] )
                        };
-                       nextValue.label = nextValue.label ? 
nextValue.label.getText() : null;
                        nextValue.description = nextValue.description ? 
nextValue.description.getText() : null;
                        value.push( nextValue );
                }
diff --git 
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
index fc2552d..be86138 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
@@ -17,7 +17,7 @@
  *         Structure: [
  *           {
  *             language: <{string]>,
- *             label: <{string|null}>,
+ *             label: <{wikibase.datamodel.Term}>,
  *             description: <{string|null}>
  *             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 5826795..5e47129 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
@@ -17,7 +17,7 @@
  *         Structure: [
  *           {
  *             language: <{string]>,
- *             label: <{string|null}>,
+ *             label: <{wikibase.datamodel.Term}>,
  *             description: <{string|null}>,
  *             aliases: <{wikibase.datamodel.MultiTerm}>
  *           }[, ...]
@@ -186,7 +186,7 @@
                for( var i = 0; i < currentValue.length; i++ ) {
                        if(
                                currentValue[i].language !== 
this.options.value[i].language
-                               || currentValue[i].label !== 
this.options.value[i].label
+                               || !currentValue[i].label.equals( 
this.options.value[i].label )
                                || currentValue[i].description !== 
this.options.value[i].description
                                || !currentValue[i].aliases.equals( 
this.options.value[i].aliases )
                        ) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
index 0854ea7..38e885a 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
@@ -16,7 +16,7 @@
  *         Object representing the widget's value.
  *         Structure: {
  *           language: <{string}>,
- *           label: <{string|null}>,
+ *           label: <{wikibase.datamodel.Term}>,
  *           description: <{string|null>,
  *           aliases: <{wikibase.datamodel.MultiTerm}>
  *         }
@@ -198,6 +198,7 @@
                        } 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;
                        }
@@ -352,7 +353,7 @@
 
                return {
                        language: this.options.value.language,
-                       label: this.$labelview.data( 'labelview' 
).value().label,
+                       label: this.$labelview.data( 'labelview' ).value(),
                        description: this.$descriptionview.data( 
'descriptionview' ).value().description,
                        aliases: this.$aliasesview.data( 'aliasesview' ).value()
                };
@@ -371,10 +372,7 @@
                                throw new Error( 'Cannot alter language' );
                        }
 
-                       this.$labelview.data( 'labelview' ).option( 'value', {
-                               language: value.language,
-                               label: value.label
-                       } );
+                       this.$labelview.data( 'labelview' ).option( 'value', 
value.label );
 
                        this.$descriptionview.data( 'descriptionview' ).option( 
'value', {
                                language: value.language,
@@ -409,7 +407,7 @@
                }
 
                if( !value.label ) {
-                       value.label = null;
+                       throw new Error( 'label needs to be a wb.datamodel.Term 
instance' );
                }
 
                if( !value.description ) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
index 7aef2aa..caf498b 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.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}>, label: <{string|null}> }
+ * @option {wikibase.datamodel.Term} value
  *
  * @option {string} [helpMessage]
  *         Default: mw.msg( 'wikibase-label-input-help-message' )
@@ -64,14 +62,15 @@
         * @throws {Error} if required parameters are not specified properly.
         */
        _create: function() {
-               if( !this.options.entityId || !this.options.labelsChanger ) {
+               if(
+                       !( this.options.value instanceof wb.datamodel.Term )
+                       || !this.options.entityId
+                       || !this.options.labelsChanger
+               ) {
                        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.attr( 'id', 'wb-firstHeading-' + 
this.options.entityId );
 
@@ -80,7 +79,7 @@
                        'labelviewafterstartediting.' + this.widgetName
                        + ' eachchange.' + this.widgetName,
                function( event ) {
-                       if( !self.value().label ) {
+                       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.
@@ -94,7 +93,7 @@
 
                PARENT.prototype._create.call( this );
 
-               if( value && value.label !== '' && this.$text.text() === '' ) {
+               if( this.options.value.getText() !== '' && this.$text.text() 
=== '' ) {
                        this._draw();
                }
        },
@@ -120,32 +119,36 @@
         * Main draw routine.
         */
        _draw: function() {
-               if( this.options.showEntityId && !( this._isInEditMode && 
this.options.value.label ) ) {
+               var self = this,
+                       languageCode = this.options.value.getLanguageCode(),
+                       labelText = this.options.value.getText();
+
+               if( labelText === '' ) {
+                       labelText = null;
+               }
+
+               if( this.options.showEntityId && !( this._isInEditMode && 
labelText ) ) {
                        this.$entityId.text( mw.msg( 'parentheses', 
this.options.entityId ) );
                } else {
                        this.$entityId.empty();
                }
 
-               this.element[this.options.value.label ? 'removeClass' : 
'addClass']( 'wb-empty' );
+               this.element[labelText ? 'removeClass' : 'addClass']( 
'wb-empty' );
 
                if( !this._isInEditMode ) {
-                       this.$text.text( this.options.value.label || mw.msg( 
'wikibase-label-empty' ) );
+                       this.$text.text( labelText || mw.msg( 
'wikibase-label-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-label-edit-placeholder-language-aware',
-                               wb.getNativeLanguageNameByCode( langCode )
+                               wb.getNativeLanguageNameByCode( languageCode )
                        ),
                        dir: dir
                } )
@@ -153,8 +156,8 @@
                        self._trigger( 'change' );
                } );
 
-               if( this.options.value.label ) {
-                       $input.val( this.options.value.label );
+               if( labelText ) {
+                       $input.val( labelText );
                }
 
                this.$text.empty().append( $input );
@@ -208,10 +211,7 @@
 
                this._trigger( 'stopediting', null, [dropValue] );
 
-               this.options.labelsChanger.setLabel(
-                       this.value().label || '',
-                       this.options.value.language
-               )
+               this.options.labelsChanger.setLabel( this.value() )
                .done( function( label ) {
                        self.enable();
                        self._afterStopEditing( dropValue );
@@ -237,7 +237,7 @@
        _afterStopEditing: function( dropValue ) {
                if( !dropValue ) {
                        this.options.value = this.value();
-               } else if( !this.options.value.label ) {
+               } else if( this.options.value.getText() === '' ) {
                        this.$text.children( 'input' ).val( '' );
                }
 
@@ -261,11 +261,7 @@
         * @return {boolean}
         */
        isInitialValue: function() {
-               var initialValue = this.options.value,
-                       currentValue = this.value();
-
-               return currentValue.language === initialValue.language
-                       && currentValue.label === initialValue.label;
+               return this.value().equals( this.options.value );
        },
 
        /**
@@ -291,8 +287,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 );
@@ -305,30 +301,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.label ) {
-                       value.label = 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 ) {
@@ -340,12 +316,10 @@
                        return this.option( 'value' );
                }
 
-               var text = $.trim( this.$text.children( 'input' ).val() );
-
-               return {
-                       language: this.options.value.language,
-                       label: text !== '' ? text : null
-               };
+               return new wb.datamodel.Term(
+                       this.options.value.getLanguageCode(),
+                       $.trim( this.$text.children( 'input' ).val() )
+               );
        },
 
        /**
@@ -395,7 +369,7 @@
                                }
                        } );
 
-                       if( !labelview.value().label ) {
+                       if( labelview.value().getText() === '' ) {
                                labelview.toEditMode();
                                $labelview.data( 'edittoolbar' ).toEditMode();
                                $labelview.data( 'edittoolbar' ).disable();
@@ -405,7 +379,7 @@
                        .off( 'labelviewafterstopediting.edittoolbar' )
                        .on( 'labelviewafterstopediting.edittoolbar', function( 
event ) {
                                var edittoolbar = $( event.target ).data( 
'edittoolbar' );
-                               if( labelview.value().label ) {
+                               if( labelview.value().getText() !== '' ) {
                                        edittoolbar.toNonEditMode();
                                        edittoolbar.enable();
                                        edittoolbar.toggleActionMessage( 
function() {
@@ -428,8 +402,8 @@
                                btnSave = edittoolbar.getButton( 'save' ),
                                enableSave = labelview.isValid() && 
!labelview.isInitialValue(),
                                btnCancel = edittoolbar.getButton( 'cancel' ),
-                               currentLabel = labelview.value().label,
-                               disableCancel = !currentLabel && 
labelview.isInitialValue();
+                               currentLabel = labelview.value().getText(),
+                               disableCancel = currentLabel === '' && 
labelview.isInitialValue();
 
                        btnSave[enableSave ? 'enable' : 'disable']();
                        btnCancel[disableCancel ? 'disable' : 'enable']();
@@ -437,7 +411,7 @@
                        if( event.type === 'labelviewchange' ) {
                                if( !labelview.isInitialValue() ) {
                                        labelview.startEditing();
-                               } else if( labelview.isInitialValue() && 
!labelview.value().label ) {
+                               } else if( labelview.isInitialValue() && 
labelview.value().getText() === '' ) {
                                        labelview.cancelEditing();
                                }
                        }
@@ -448,15 +422,15 @@
                                edittoolbar = $labelview.data( 'edittoolbar' ),
                                btnSave = edittoolbar.getButton( 'save' ),
                                enable = labelview.isValid() && 
!labelview.isInitialValue(),
-                               currentLabel = labelview.value().label;
+                               currentLabel = labelview.value().getText();
 
                        btnSave[enable ? 'enable' : 'disable']();
 
-                       if( labelview.option( 'disabled' ) || currentLabel ) {
+                       if( labelview.option( 'disabled' ) || currentLabel !== 
'' ) {
                                return;
                        }
 
-                       if( !currentLabel ) {
+                       if( currentLabel === '' ) {
                                edittoolbar.disable();
                        }
                },
diff --git a/lib/resources/jquery.wikibase/resources.php 
b/lib/resources/jquery.wikibase/resources.php
index b64b16f..f3d618a 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -180,33 +180,12 @@
                                'jquery.wikibase.statementview',
                                'wikibase',
                                'wikibase.datamodel.MultiTerm',
+                               'wikibase.datamodel.Term',
                                'wikibase.templates',
                        ),
                        'messages' => array(
                                
'wikibase-fingerprintgroupview-input-help-message',
                                'wikibase-terms',
-                       ),
-               ),
-
-               'jquery.wikibase.labelview' => $moduleTemplate + array(
-                       'scripts' => array(
-                               'jquery.wikibase.labelview.js'
-                       ),
-                       'styles' => array(
-                               'themes/default/jquery.wikibase.labelview.css',
-                       ),
-                       'dependencies' => array(
-                               'jquery.ui.TemplatedWidget',
-                               'jquery.wikibase.edittoolbar',
-                               'jquery.wikibase.toolbarcontroller',
-                               'wikibase',
-                       ),
-                       'messages' => array(
-                               'parentheses',
-                               'wikibase-label-edit-placeholder',
-                               
'wikibase-label-edit-placeholder-language-aware',
-                               'wikibase-label-empty',
-                               'wikibase-label-input-help-message',
                        ),
                ),
 
@@ -264,6 +243,29 @@
                        ),
                ),
 
+               'jquery.wikibase.labelview' => $moduleTemplate + array(
+                       'scripts' => array(
+                               'jquery.wikibase.labelview.js'
+                       ),
+                       'styles' => array(
+                               'themes/default/jquery.wikibase.labelview.css',
+                       ),
+                       'dependencies' => array(
+                               'jquery.ui.TemplatedWidget',
+                               'jquery.wikibase.edittoolbar',
+                               'jquery.wikibase.toolbarcontroller',
+                               'wikibase',
+                               'wikibase.datamodel.Term',
+                       ),
+                       'messages' => array(
+                               'parentheses',
+                               'wikibase-label-edit-placeholder',
+                               
'wikibase-label-edit-placeholder-language-aware',
+                               'wikibase-label-empty',
+                               'wikibase-label-input-help-message',
+                       ),
+               ),
+
                'jquery.wikibase.listview' => $moduleTemplate + array(
                        'scripts' => array(
                                'jquery.wikibase.listview.js',
diff --git a/lib/tests/qunit/entityChangers/LabelsChanger.tests.js 
b/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
index eca8024..8484f0d 100644
--- a/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
+++ b/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
@@ -25,7 +25,7 @@
                var api = {
                        setLabel: sinon.spy( function() {
                                return $.Deferred().promise();
-                       } ),
+                       } )
                };
                var labelsChanger = new SUBJECT(
                        api,
@@ -33,7 +33,7 @@
                        new wb.datamodel.Item( 'Q1' )
                );
 
-               labelsChanger.setLabel( 'label', 'language' );
+               labelsChanger.setLabel( new wb.datamodel.Term( 'language', 
'label' ) );
 
                assert.ok( api.setLabel.calledOnce );
        } );
@@ -51,7 +51,7 @@
                                                }
                                        }
                                } ).promise();
-                       } ),
+                       } )
                };
                var labelsChanger = new SUBJECT(
                        api,
@@ -61,7 +61,7 @@
 
                QUnit.stop();
 
-               labelsChanger.setLabel( 'label', 'language' )
+               labelsChanger.setLabel( new wb.datamodel.Term( 'language', 
'label' ) )
                .done( function( savedLabel ) {
                        QUnit.start();
                        assert.equal( savedLabel, 'label' );
@@ -75,7 +75,7 @@
                var api = {
                        setLabel: sinon.spy( function() {
                                return $.Deferred().reject( 'errorCode', { 
error: { code: 'errorCode' } } ).promise();
-                       } ),
+                       } )
                };
                var labelsChanger = new SUBJECT(
                        api,
@@ -85,7 +85,7 @@
 
                QUnit.stop();
 
-               labelsChanger.setLabel( 'label', 'language' )
+               labelsChanger.setLabel( new wb.datamodel.Term( 'language', 
'label' ) )
                .done( function( savedLabel ) {
                        assert.ok( false, 'setLabel should have failed' );
                } )
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 d9b2f0f..485fabd 100644
--- 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
+++ 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
@@ -14,12 +14,12 @@
                value: [
                        {
                                language: 'de',
-                               label: 'de-label',
+                               label: new wb.datamodel.Term( 'de', 'de-label' 
),
                                description: 'de-description',
                                aliases: new wb.datamodel.MultiTerm( 'de', [] )
                        }, {
                                language: 'en',
-                               label: 'en-label',
+                               label: new wb.datamodel.Term( 'en', 'en-label' 
),
                                description: '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 4aab2d0..0a25d27 100644
--- 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
+++ 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
@@ -20,12 +20,12 @@
                value: [
                        {
                                language: 'de',
-                               label: 'de-label',
+                               label: new wb.datamodel.Term( 'de', 'de-label' 
),
                                description: 'de-description',
                                aliases: new wb.datamodel.MultiTerm( 'de', [] )
                        }, {
                                language: 'en',
-                               label: 'en-label',
+                               label: new wb.datamodel.Term( 'en', 'en-label' 
),
                                description: 'en-description',
                                aliases: new wb.datamodel.MultiTerm( 'en', [] )
                        }
@@ -90,7 +90,7 @@
 
        var $item = $fingerprintlistview.data( 'listview' ).addItem( {
                language: 'fa',
-               label: 'fa-label',
+               label: new wb.datamodel.Term( 'fa', 'fa-label' ),
                description: '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 6922132..0976a7b 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
@@ -2,7 +2,6 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-
 ( function( $, wb, QUnit ) {
 'use strict';
 
@@ -29,7 +28,7 @@
                },
                value: {
                        language: 'en',
-                       label: 'test label',
+                       label: new wb.datamodel.Term( 'en', 'test label' ),
                        description: 'test description',
                        aliases: new wb.datamodel.MultiTerm( 'en', ['alias1', 
'alias2'] )
                }
@@ -247,6 +246,7 @@
 QUnit.test( 'value()', function( assert ) {
        var $fingerprintview = createFingerprintview(),
                fingerprintview = $fingerprintview.data( 'fingerprintview' ),
+               label = new wb.datamodel.Term( 'en', 'changed label' ),
                aliases = new wb.datamodel.MultiTerm( 'en', ['alias1', 
'alias2'] );
 
        assert.throws(
@@ -258,21 +258,14 @@
 
        fingerprintview.value( {
                language: 'en',
-               label: 'changed label',
+               label: label,
                description: 'test description',
                aliases: aliases
        } );
 
        assert.ok(
-               fingerprintview.value().label,
-               'changed label',
+               fingerprintview.value().label.equals( label ),
                'Set new label.'
-       );
-
-       assert.equal(
-               fingerprintview.value().language,
-               'en',
-               'Did not change language.'
        );
 
        assert.equal(
@@ -281,16 +274,17 @@
                'Did not change description.'
        );
 
+       label = new wb.datamodel.Term( 'en', 'test label' );
+
        fingerprintview.value( {
                language: 'en',
-               label: 'test label',
+               label: label,
                description: null,
                aliases: aliases
        } );
 
-       assert.equal(
-               fingerprintview.value().label,
-               'test label',
+       assert.ok(
+               fingerprintview.value().label.equals( label ),
                'Reset label.'
        );
 
@@ -304,7 +298,7 @@
 
        fingerprintview.value( {
                language: 'en',
-               label: 'test label',
+               label: label,
                description: null,
                aliases: aliases
        } );
@@ -318,7 +312,7 @@
 
        fingerprintview.value( {
                language: 'en',
-               label: 'test label',
+               label: label,
                description: null,
                aliases: aliases
        } );
@@ -332,7 +326,7 @@
                function() {
                        fingerprintview.value( {
                                language: 'de',
-                               label: 'test label',
+                               label: label,
                                description: null,
                                aliases: aliases
                        } );
diff --git a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
index c153a7b..455641f 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
@@ -2,8 +2,7 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-
-( function( $, QUnit ) {
+( function( $, wb, QUnit ) {
 'use strict';
 
 /**
@@ -15,10 +14,7 @@
        options = $.extend( {
                entityId: 'i am an EntityId',
                labelsChanger: 'i am a LabelsChanger',
-               value: {
-                       language: 'en',
-                       label: 'test label'
-               }
+               value: new wb.datamodel.Term( 'en', 'test label' )
        }, options || {} );
 
        $node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -160,36 +156,33 @@
 
 QUnit.test( 'value()', function( assert ) {
        var $labelview = createLabelview(),
-               labelview = $labelview.data( 'labelview' );
+               labelview = $labelview.data( 'labelview' ),
+               newValue = null;
 
        assert.throws(
                function() {
-                       labelview.value( null );
+                       labelview.value( newValue );
                },
                'Trying to set no value fails.'
        );
 
-       labelview.value( {
-               language: 'de',
-               label: 'changed label'
-       } );
+       newValue = new wb.datamodel.Term( 'de', 'changed label' );
+
+       labelview.value( newValue );
 
        assert.ok(
-               labelview.value().language === 'de'
-                       && labelview.value().label === 'changed label',
+               labelview.value().equals( newValue ),
                'Set new value.'
        );
 
-       labelview.value( {
-               language: 'en',
-               label: null
-       } );
+       newValue = new wb.datamodel.Term( 'en', '' );
+
+       labelview.value( newValue );
 
        assert.ok(
-               labelview.value().language === 'en'
-                       && labelview.value().label === null,
+               labelview.value().equals( newValue ),
                'Set another value.'
        );
 } );
 
-}( jQuery, QUnit ) );
+}( jQuery, wikibase, QUnit ) );
diff --git a/lib/tests/qunit/jquery.wikibase/resources.php 
b/lib/tests/qunit/jquery.wikibase/resources.php
index 81591ef..7889923 100644
--- a/lib/tests/qunit/jquery.wikibase/resources.php
+++ b/lib/tests/qunit/jquery.wikibase/resources.php
@@ -110,6 +110,7 @@
                                'dependencies' => array(
                                        'jquery.wikibase.fingerprintgroupview',
                                        'wikibase.datamodel.MultiTerm',
+                                       'wikibase.datamodel.Term',
                                ),
                        ),
 
@@ -120,6 +121,7 @@
                        'dependencies' => array(
                                'jquery.wikibase.fingerprintlistview',
                                'wikibase.datamodel.MultiTerm',
+                               'wikibase.datamodel.Term',
                        ),
                ),
 
@@ -138,6 +140,7 @@
                        ),
                        'dependencies' => array(
                                'jquery.wikibase.labelview',
+                               'wikibase.datamodel.Term',
                        ),
                ),
 
diff --git a/repo/resources/wikibase.ui.entityViewInit.js 
b/repo/resources/wikibase.ui.entityViewInit.js
index 89aa5d2..5a9159c 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -138,10 +138,10 @@
                .on( 'labelviewchange labelviewafterstopediting', function( 
event ) {
                        var $labelview = $( event.target ),
                                labelview = $labelview.data( 'labelview' ),
-                               label = labelview.value().label;
+                               label = labelview.value().getText();
 
                        $( 'title' ).text(
-                               mw.msg( 'pagetitle', label && label !== '' ? 
label : mw.config.get( 'wgTitle' ) )
+                               mw.msg( 'pagetitle', label !== '' ? label : 
mw.config.get( 'wgTitle' ) )
                        );
                } )
                .on( 'entityviewafterstartediting', function() {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Idd48d792d84b84c4a5f5bf82e5c2f6943b910b0c
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Adrian Lang <adrian.l...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to