jenkins-bot has submitted this change and it was merged.
Change subject: Replace wb.formatters.getStore with ValueFormatterFactory
......................................................................
Replace wb.formatters.getStore with ValueFormatterFactory
Bug: T125521
Change-Id: I60935f85f3f01b327c7d79cb3567c4a37521f004
---
M composer.json
M repo/resources/Resources.php
A repo/resources/formatters/ApiValueFormatter.js
A repo/resources/formatters/ApiValueFormatterFactory.js
D repo/resources/formatters/getApiBasedValueFormatterConstructor.js
D repo/resources/formatters/getStore.js
M repo/resources/formatters/resources.php
M repo/resources/wikibase.ui.entityViewInit.js
M
view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdHtmlFormatter.js
M
view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdPlainFormatter.js
M view/resources/wikibase/resources.php
M view/resources/wikibase/view/ViewFactory.js
A view/resources/wikibase/wikibase.ValueFormatterFactory.js
M view/resources/wikibase/wikibase.ValueViewBuilder.js
M view/tests/qunit/wikibase/view/ViewFactory.tests.js
M view/tests/qunit/wikibase/wikibase.ValueViewBuilder.tests.js
16 files changed, 259 insertions(+), 190 deletions(-)
Approvals:
Hoo man: Looks good to me, approved
jenkins-bot: Verified
diff --git a/composer.json b/composer.json
index 97712a0..177bdd0 100644
--- a/composer.json
+++ b/composer.json
@@ -32,7 +32,7 @@
"data-values/data-types": "~0.5.0",
"data-values/serialization": "~1.0",
"data-values/javascript": "~0.8.0",
- "data-values/value-view": "~0.15.11",
+ "data-values/value-view": "~0.16.0",
"wikibase/data-model": "~4.0",
"wikibase/data-model-serialization": "~2.0",
"wikibase/internal-serialization": "~2.0",
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index dd8aa2e..ac920bb 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -90,7 +90,7 @@
'wikibase.dataTypeStore',
'wikibase.entityChangers.EntityChangersFactory',
'wikibase.experts.getStore',
- 'wikibase.formatters.getStore',
+ 'wikibase.formatters.ApiValueFormatterFactory',
'wikibase.entityIdFormatter.CachingEntityIdHtmlFormatter',
'wikibase.entityIdFormatter.CachingEntityIdPlainFormatter',
'wikibase.entityIdFormatter.DataValueBasedEntityIdHtmlFormatter',
diff --git a/repo/resources/formatters/ApiValueFormatter.js
b/repo/resources/formatters/ApiValueFormatter.js
new file mode 100644
index 0000000..24b0d28
--- /dev/null
+++ b/repo/resources/formatters/ApiValueFormatter.js
@@ -0,0 +1,84 @@
+/**
+ * @licence GNU GPL v2+
+ * @author H. Snater < [email protected] >
+ */
+( function( $, wb, vf, util ) {
+ 'use strict';
+
+ wb.formatters = wb.formatters || {};
+
+ var PARENT = vf.ValueFormatter;
+
+ /**
+ * A ValueFormatter which is doing an API request to
+ * the FormatSnakValue API module for formatting a value.
+ *
+ * @constructor
+ * @extends valueFormatters.ValueFormatter
+ * @since 0.5
+ *
+ * @param {wikibase.api.FormatValueCaller} formatValueCaller
+ * @param {Object} additionalOptions
+ * @param {string|null} dataTypeId
+ * @param {string} outputType
+ */
+ wb.formatters.ApiValueFormatter = util.inherit(
+ 'WbApiValueFormatter',
+ PARENT,
+ function( formatValueCaller, additionalOptions, dataTypeId,
outputType ) {
+ this._formatValueCaller = formatValueCaller;
+ this._options = additionalOptions;
+ this._dataTypeId = dataTypeId;
+ this._outputType = outputType;
+ },
+ {
+ /**
+ * @var {wikibase.api.FormatValueCaller}
+ */
+ _formatValueCaller: null,
+
+ /**
+ * @var {string|null}
+ */
+ _dataTypeId: null,
+
+ /**
+ * @var {Object}
+ */
+ _options: null,
+
+ /**
+ * @var {string} outputType
+ */
+ _outputType: null,
+
+ /**
+ * @see valueFormatters.ValueFormatter.format
+ * @since 0.1
+ *
+ * @param {dataValues.DataValue} dataValue
+ * @return {jQuery.Promise}
+ * Resolved parameters:
+ * - {string} Formatted DataValue.
+ * - {dataValues.DataValues} Original DataValue
object.
+ * Rejected parameters:
+ * - {string} HTML error message.
+ */
+ format: function( dataValue ) {
+ var deferred = $.Deferred();
+
+ this._formatValueCaller.formatValue( dataValue,
this._dataTypeId, this._outputType, this._options )
+ .done( function( formattedValue ) {
+ deferred.resolve( formattedValue,
dataValue );
+ } )
+ .fail( function( error ) {
+ deferred.reject( error.detailedMessage
|| error.code );
+ } );
+
+ return deferred.promise();
+ }
+
+ }
+ );
+
+}( jQuery, wikibase, valueFormatters, util ) );
diff --git a/repo/resources/formatters/ApiValueFormatterFactory.js
b/repo/resources/formatters/ApiValueFormatterFactory.js
new file mode 100644
index 0000000..e6d8aa4
--- /dev/null
+++ b/repo/resources/formatters/ApiValueFormatterFactory.js
@@ -0,0 +1,50 @@
+/**
+ * @licence GNU GPL v2+
+ * @author H. Snater < [email protected] >
+ * @author Adrian Heine <[email protected]>
+ */
+( function( $, wb ) {
+ 'use strict';
+
+ var PARENT = wb.ValueFormatterFactory;
+ wb.formatters = wb.formatters || {};
+
+ /**
+ * @param {wikibase.api.FormatValueCaller} apiCaller
+ * @param {string} languageCode
+ */
+ wb.formatters.ApiValueFormatterFactory = util.inherit(
+ PARENT,
+ function( apiCaller, languageCode ) {
+ this._apiCaller = apiCaller;
+ this._options = { lang: languageCode };
+ },
+ {
+ /**
+ * @type {wikibase.api.FormatValueCaller}
+ */
+ _apiCaller: null,
+
+ /**
+ * @type {Object}
+ */
+ _options: null,
+
+ /**
+ * Returns a ValueFormatter instance for the given
DataType id and output type
+ *
+ * @param {string|null} dataTypeId
+ * @param {string} outputType
+ * @return {valueFormatters.ValueFormatter}
+ */
+ getFormatter: function( dataTypeId, outputType ) {
+ var options = this._options;
+ if ( dataTypeId === 'quantity' && outputType
=== 'text/plain' ) {
+ options = $.extend( { applyRounding:
false, applyUnit: false }, options );
+ }
+ return new wb.formatters.ApiValueFormatter(
this._apiCaller, options, dataTypeId, outputType );
+ }
+ }
+ );
+
+}( jQuery, wikibase ) );
diff --git a/repo/resources/formatters/getApiBasedValueFormatterConstructor.js
b/repo/resources/formatters/getApiBasedValueFormatterConstructor.js
deleted file mode 100644
index fe84f56..0000000
--- a/repo/resources/formatters/getApiBasedValueFormatterConstructor.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @licence GNU GPL v2+
- * @author H. Snater < [email protected] >
- */
-( function( $, wb, vf, util ) {
- 'use strict';
-
- wb.formatters = wb.formatters || {};
-
- var PARENT = vf.ValueFormatter;
-
- /**
- * Get a constructor for a ValueFormatter which formats using the given
wikibase.api.FormatValueCaller
- *
- * This is necessary since valueFormatter.ValueFormatterStore returns a
constructor, not an
- * instance, and we have to pass in the wikibase.api.RepoApi wrapped in
a
- * wikibase.api.FormatValueCaller.
- *
- * @param {wikibase.api.FormatValueCaller} apiValueFormatter
- */
- wb.formatters.getApiBasedValueFormatterConstructor = function(
apiValueFormatter ) {
- /**
- * Base constructor for objects representing a value formatter
which is doing an API request to
- * the FormatSnakValue API module for formatting a value.
- * @constructor
- * @extends valueFormatters.ValueFormatter
- * @since 0.5
- */
- return util.inherit( 'WbApiBasedValueFormatter', PARENT, {
- /**
- * @see valueFormatters.ValueFormatter.parse
- * @since 0.1
- *
- * @param {dataValues.DataValue} dataValue
- * @param {string} [dataTypeId]
- * @param {string} [outputType] The output's preferred
MIME type
- * @return {jQuery.Promise}
- * Resolved parameters:
- * - {string} Formatted DataValue.
- * - {dataValues.DataValues} Original DataValue
object.
- * Rejected parameters:
- * - {string} HTML error message.
- */
- format: function( dataValue, dataTypeId, outputType ) {
- var deferred = $.Deferred();
-
- // Since dataTypeId and outputType are optional
parameters to this function as well as
- // to
wikibase.api.FormatValueCaller.formatValue, we use this complicated apply
arguments pattern.
- apiValueFormatter.formatValue.apply(
- apiValueFormatter,
- $.makeArray( arguments ).concat(
[this._options] )
- )
- .done( function( formattedValue ) {
- deferred.resolve( formattedValue,
dataValue );
- } )
- .fail( function( error ) {
- deferred.reject( error.detailedMessage
|| error.code );
- } );
-
- return deferred.promise();
- }
-
- } );
- };
-
-}( jQuery, wikibase, valueFormatters, util ) );
diff --git a/repo/resources/formatters/getStore.js
b/repo/resources/formatters/getStore.js
deleted file mode 100644
index 8250d18..0000000
--- a/repo/resources/formatters/getStore.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * @licence GNU GPL v2+
- * @author H. Snater < [email protected] >
- */
-( function( wb, vf, dv ) {
- 'use strict';
-
- wb.formatters = wb.formatters || {};
-
- /**
- * @param {wikibase.api.RepoApi} api
- * @param {dataTypes.DataTypeStore} dataTypeStore
- */
- wb.formatters.getStore = function( api, dataTypeStore ) {
- var apiCaller = new wb.api.FormatValueCaller(
- api,
- dataTypeStore
- );
-
- var ApiBasedValueFormatter =
wb.formatters.getApiBasedValueFormatterConstructor( apiCaller );
-
- var formatterStore = new vf.ValueFormatterStore(
vf.NullFormatter );
-
- formatterStore.registerDataValueFormatter(
- ApiBasedValueFormatter,
- wb.datamodel.EntityId.TYPE
- );
-
- formatterStore.registerDataValueFormatter(
- ApiBasedValueFormatter,
- dv.GlobeCoordinateValue.TYPE
- );
-
- formatterStore.registerDataValueFormatter(
- ApiBasedValueFormatter,
- dv.QuantityValue.TYPE
- );
-
- formatterStore.registerDataValueFormatter(
- ApiBasedValueFormatter,
- dv.StringValue.TYPE
- );
-
- formatterStore.registerDataValueFormatter(
- ApiBasedValueFormatter,
- dv.TimeValue.TYPE
- );
-
- var commonsMediaType = dataTypeStore.getDataType(
'commonsMedia' );
- if ( commonsMediaType ) {
- formatterStore.registerDataTypeFormatter(
- ApiBasedValueFormatter,
- commonsMediaType.getId()
- );
- }
-
- var urlType = dataTypeStore.getDataType( 'url' );
- if ( urlType ) {
- formatterStore.registerDataTypeFormatter(
- ApiBasedValueFormatter,
- urlType.getId()
- );
- }
-
- var monolingualTextType = dataTypeStore.getDataType(
'monolingualtext' );
- if ( monolingualTextType ) {
- formatterStore.registerDataTypeFormatter(
- ApiBasedValueFormatter,
- monolingualTextType.getId()
- );
- }
-
- return formatterStore;
- };
-
-}( wikibase, valueFormatters, dataValues ) );
diff --git a/repo/resources/formatters/resources.php
b/repo/resources/formatters/resources.php
index d43da03..d9e81b3 100644
--- a/repo/resources/formatters/resources.php
+++ b/repo/resources/formatters/resources.php
@@ -16,9 +16,9 @@
return array(
- 'wikibase.formatters.getApiBasedValueFormatterConstructor' =>
$moduleTemplate + array(
+ 'wikibase.formatters.ApiValueFormatter' => $moduleTemplate +
array(
'scripts' => array(
- 'getApiBasedValueFormatterConstructor.js',
+ 'ApiValueFormatter.js',
),
'dependencies' => array(
'wikibase',
@@ -27,17 +27,14 @@
),
),
- 'wikibase.formatters.getStore' => $moduleTemplate + array(
+ 'wikibase.formatters.ApiValueFormatterFactory' =>
$moduleTemplate + array(
'scripts' => array(
- 'getStore.js',
+ 'ApiValueFormatterFactory.js',
),
'dependencies' => array(
- 'dataValues.values',
- 'valueFormatters.formatters',
- 'valueFormatters.ValueFormatterStore',
'wikibase.api.FormatValueCaller',
- 'wikibase.datamodel',
-
'wikibase.formatters.getApiBasedValueFormatterConstructor',
+ 'wikibase.formatters.ApiValueFormatter',
+ 'wikibase.ValueFormatterFactory'
),
),
diff --git a/repo/resources/wikibase.ui.entityViewInit.js
b/repo/resources/wikibase.ui.entityViewInit.js
index e22a241..9a70b6c 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -4,7 +4,7 @@
* @author Daniel Werner < daniel.werner at wikimedia.de >
* @author Adrian Heine < [email protected] >
*/
-( function( $, mw, wb, dataTypeStore, getExpertsStore, getFormatterStore,
getParserStore, performance ) {
+( function( $, mw, wb, dataTypeStore, getExpertsStore, getParserStore,
performance ) {
'use strict';
/**
@@ -98,23 +98,30 @@
entity
),
contentLanguages = new
wikibase.WikibaseContentLanguages(),
- formatterStore = getFormatterStore( repoApi,
dataTypeStore ),
+ formatterFactory = new
wb.formatters.ApiValueFormatterFactory(
+ new wb.api.FormatValueCaller(
+ repoApi,
+ dataTypeStore
+ ),
+ userLanguages[0]
+ ),
parserStore = getParserStore( repoApi ),
- entityIdFormatter = new ( formatterStore.getFormatter(
wb.datamodel.EntityId.TYPE ) )( { lang: userLanguages[0] } ),
+ htmlDataValueEntityIdFormatter =
formatterFactory.getFormatter( null, 'text/html' ),
+ plaintextDataValueEntityIdFormatter =
formatterFactory.getFormatter( null, 'text/plain' ),
entityIdParser = new ( parserStore.getParser(
wb.datamodel.EntityId.TYPE ) )( { lang: userLanguages[0] } ),
viewFactory = new wikibase.view.ViewFactory(
contentLanguages,
dataTypeStore,
entityChangersFactory,
new
wb.entityIdFormatter.CachingEntityIdHtmlFormatter(
- new
wb.entityIdFormatter.DataValueBasedEntityIdHtmlFormatter( entityIdParser,
entityIdFormatter )
+ new
wb.entityIdFormatter.DataValueBasedEntityIdHtmlFormatter( entityIdParser,
htmlDataValueEntityIdFormatter )
),
new
wb.entityIdFormatter.CachingEntityIdPlainFormatter(
- new
wb.entityIdFormatter.DataValueBasedEntityIdPlainFormatter( entityIdParser,
entityIdFormatter )
+ new
wb.entityIdFormatter.DataValueBasedEntityIdPlainFormatter( entityIdParser,
plaintextDataValueEntityIdFormatter )
),
entityStore,
getExpertsStore( dataTypeStore ),
- formatterStore,
+ formatterFactory,
{
getMessage: function( key, params ) {
return mw.msg.apply( mw, [ key
].concat( params ) );
@@ -393,7 +400,6 @@
wikibase,
wikibase.dataTypeStore,
wikibase.experts.getStore,
- wikibase.formatters.getStore,
wikibase.parsers.getStore,
window.performance
);
diff --git
a/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdHtmlFormatter.js
b/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdHtmlFormatter.js
index 540f813..6a556c8 100644
---
a/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdHtmlFormatter.js
+++
b/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdHtmlFormatter.js
@@ -21,7 +21,7 @@
var deferred = $.Deferred(),
self = this;
this._parser.parse( entityId ).done( function(
parsed ) {
- return self._formatter.format( parsed,
null, 'text/html' ).done( function( response ) {
+ return self._formatter.format( parsed
).done( function( response ) {
deferred.resolve( response );
} ).fail( function() {
deferred.resolve(
mw.html.escape( entityId ) );
diff --git
a/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdPlainFormatter.js
b/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdPlainFormatter.js
index f835731..a27536c 100644
---
a/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdPlainFormatter.js
+++
b/view/resources/wikibase/entityIdFormatter/DataValueBasedEntityIdPlainFormatter.js
@@ -21,7 +21,7 @@
var deferred = $.Deferred(),
self = this;
this._parser.parse( entityId ).done( function(
parsed ) {
- return self._formatter.format( parsed,
null, 'text/plain' ).done( function( response ) {
+ return self._formatter.format( parsed
).done( function( response ) {
deferred.resolve( response );
} ).fail( function() {
deferred.resolve( entityId );
diff --git a/view/resources/wikibase/resources.php
b/view/resources/wikibase/resources.php
index 962006c..a3fdf41 100644
--- a/view/resources/wikibase/resources.php
+++ b/view/resources/wikibase/resources.php
@@ -72,6 +72,16 @@
),
),
+ 'wikibase.ValueFormatterFactory' => $moduleTemplate + array(
+ 'scripts' => array(
+ 'wikibase.ValueFormatterFactory.js',
+ ),
+ 'dependencies' => array(
+ 'util.inherit',
+ 'wikibase',
+ ),
+ ),
+
);
return $modules;
diff --git a/view/resources/wikibase/view/ViewFactory.js
b/view/resources/wikibase/view/ViewFactory.js
index 8bc8073..19e17e9 100644
--- a/view/resources/wikibase/view/ViewFactory.js
+++ b/view/resources/wikibase/view/ViewFactory.js
@@ -29,7 +29,7 @@
* Required for dynamically gathering `Entity`/`Property`
information.
* @param {jQuery.valueview.ExpertStore} expertStore
* Required by the `ValueView` for constructing `expert`s for
different value types.
- * @param {valueFormatters.ValueFormatterStore} formatterStore
+ * @param {wikibase.ValueFormatterFactory} formatterFactory
* Required by the `ValueView` for formatting entered values.
* @param {util.MessageProvider} messageProvider
* Required by the `ValueView` for showing the user interface in
the correct language.
@@ -48,7 +48,7 @@
entityIdPlainFormatter,
entityStore,
expertStore,
- formatterStore,
+ formatterFactory,
messageProvider,
parserStore,
userLanguages,
@@ -61,7 +61,7 @@
this._entityIdPlainFormatter = entityIdPlainFormatter;
this._entityStore = entityStore;
this._expertStore = expertStore;
- this._formatterStore = formatterStore;
+ this._formatterFactory = formatterFactory;
this._messageProvider = messageProvider;
this._parserStore = parserStore;
// Maybe make userLanguages an argument to getEntityView
instead of to the constructor
@@ -112,10 +112,10 @@
SELF.prototype._expertStore = null;
/**
- * @property {valueFormatters.ValueFormatterStore}
+ * @property {wikibsae.ValueFormatterFactory}
* @private
**/
- SELF.prototype._formatterStore = null;
+ SELF.prototype._formatterFactory = null;
/**
* @property {util.MessageProvider}
@@ -441,7 +441,7 @@
SELF.prototype._getValueViewBuilder = function() {
return new wb.ValueViewBuilder(
this._expertStore,
- this._formatterStore,
+ this._formatterFactory,
this._parserStore,
this._userLanguages && this._userLanguages[0],
this._messageProvider,
diff --git a/view/resources/wikibase/wikibase.ValueFormatterFactory.js
b/view/resources/wikibase/wikibase.ValueFormatterFactory.js
new file mode 100644
index 0000000..d79217b
--- /dev/null
+++ b/view/resources/wikibase/wikibase.ValueFormatterFactory.js
@@ -0,0 +1,17 @@
+( function( util, wb ) {
+
+'use strict';
+
+var SELF = wb.ValueFormatterFactory = function() {
+};
+
+/**
+ * Returns a ValueFormatter instance for the given DataType id and output type
+ *
+ * @param {string|null} dataTypeId
+ * @param {string} outputType
+ * @return {valueFormatters.ValueFormatter}
+ */
+SELF.prototype.getFormatter = util.abstractMember;
+
+}( util, wikibase ) );
diff --git a/view/resources/wikibase/wikibase.ValueViewBuilder.js
b/view/resources/wikibase/wikibase.ValueViewBuilder.js
index 740db35..0d7794f 100644
--- a/view/resources/wikibase/wikibase.ValueViewBuilder.js
+++ b/view/resources/wikibase/wikibase.ValueViewBuilder.js
@@ -9,7 +9,7 @@
* @constructor
*
* @param {jQuery.valueview.ExpertStore} expertStore
- * @param {valueFormatters.ValueFormatterStore} formatterStore
+ * @param {wikibase.ValueFormatterFactory} formatterFactory
* @param {valueParsers.ValueParserStore} parserStore
* @param {string} language
* @param {util.MessageProvider} messageProvider
@@ -18,7 +18,7 @@
*/
var SELF = wb.ValueViewBuilder = function WbValueViewBuilder(
expertStore,
- formatterStore,
+ formatterFactory,
parserStore,
language,
messageProvider,
@@ -27,25 +27,30 @@
) {
this._baseOptions = {
expertStore: expertStore,
- formatterStore: formatterStore,
parserStore: parserStore,
language: language,
messageProvider: messageProvider,
contentLanguages: contentLanguages,
vocabularyLookupApiUrl: vocabularyLookupApiUrl || null
};
+ this._formatterFactory = formatterFactory;
};
$.extend( SELF.prototype, {
/**
- * @type {Object}
+ * @var {Object}
*/
_baseOptions: null,
/**
+ * @var {wikibase.ValueFormatterFactory}
+ */
+ _formatterFactory: null,
+
+ /**
* @param {jQuery} $valueViewDom
- * @param {dataTypes.DataType} dataType
- * @param {dataValues.DataValue} dataValue
+ * @param {dataTypes.DataType|null} dataType
+ * @param {dataValues.DataValue|null} dataValue
*
* @return {jQuery.valueview}
*/
@@ -61,8 +66,17 @@
return valueView;
},
+ /**
+ * @param {dataTypes.DataType|null} dataType
+ * @param {dataValues.DataValue|null} dataValue
+ *
+ * @return {Object}
+ */
_getOptions: function( dataType, dataValue ) {
+ var dataTypeId = dataType && dataType.getId();
var valueViewOptions = $.extend( {}, this._baseOptions,
{
+ htmlFormatter:
this._formatterFactory.getFormatter( dataTypeId, 'text/html' ),
+ plaintextFormatter:
this._formatterFactory.getFormatter( dataTypeId, 'text/plain' ),
value: dataValue
} );
diff --git a/view/tests/qunit/wikibase/view/ViewFactory.tests.js
b/view/tests/qunit/wikibase/view/ViewFactory.tests.js
index 62b9ea3..85c1558 100644
--- a/view/tests/qunit/wikibase/view/ViewFactory.tests.js
+++ b/view/tests/qunit/wikibase/view/ViewFactory.tests.js
@@ -342,7 +342,7 @@
entityIdPlainFormatter = {},
entityStore = {},
expertStore = {},
- formatterStore = {},
+ formatterFactory = {},
messageProvider = {},
parserStore = {},
userLanguages = [],
@@ -354,7 +354,7 @@
entityIdPlainFormatter,
entityStore,
expertStore,
- formatterStore,
+ formatterFactory,
messageProvider,
parserStore,
userLanguages
@@ -435,7 +435,7 @@
entityIdPlainFormatter = {},
entityStore = {},
expertStore = {},
- formatterStore = {},
+ formatterFactory = {},
messageProvider = {},
parserStore = {},
userLanguages = [],
@@ -447,7 +447,7 @@
entityIdPlainFormatter,
entityStore,
expertStore,
- formatterStore,
+ formatterFactory,
messageProvider,
parserStore,
userLanguages
@@ -490,7 +490,7 @@
sinon.assert.calledWith( wb.ValueViewBuilder,
expertStore,
- formatterStore,
+ formatterFactory,
parserStore,
userLanguages[0],
messageProvider,
@@ -514,7 +514,7 @@
entityIdPlainFormatter = {},
entityStore = {},
expertStore = {},
- formatterStore = {},
+ formatterFactory = {},
messageProvider = {},
parserStore = {},
userLanguages = [],
@@ -526,7 +526,7 @@
entityIdPlainFormatter,
entityStore,
expertStore,
- formatterStore,
+ formatterFactory,
messageProvider,
parserStore,
userLanguages
@@ -557,7 +557,7 @@
sinon.assert.calledWith( wb.ValueViewBuilder,
expertStore,
- formatterStore,
+ formatterFactory,
parserStore,
userLanguages[0],
messageProvider,
diff --git a/view/tests/qunit/wikibase/wikibase.ValueViewBuilder.tests.js
b/view/tests/qunit/wikibase/wikibase.ValueViewBuilder.tests.js
index 09dbe92..76cb9f7 100644
--- a/view/tests/qunit/wikibase/wikibase.ValueViewBuilder.tests.js
+++ b/view/tests/qunit/wikibase/wikibase.ValueViewBuilder.tests.js
@@ -29,7 +29,10 @@
valueView = vvAndDom.vv,
$dom = vvAndDom.$dom;
- var valueViewBuilder = new wb.ValueViewBuilder();
+ var valueViewBuilder = new wb.ValueViewBuilder(
+ null,
+ { getFormatter: function() {} }
+ );
var returnValue = valueViewBuilder.initValueView( $dom );
@@ -41,12 +44,12 @@
var vvAndDom = getValueViewAndDom(),
$dom = vvAndDom.$dom,
expertStore = {},
- formatterStore = {},
+ formatterFactory = { getFormatter: function() {} },
parserStore = {};
var valueViewBuilder = new wb.ValueViewBuilder(
expertStore,
- formatterStore,
+ formatterFactory,
parserStore,
null,
null
@@ -56,8 +59,32 @@
sinon.assert.calledWith( $dom.valueview, sinon.match( {
expertStore: expertStore,
- formatterStore: formatterStore,
parserStore: parserStore
+ } ) );
+ } );
+
+ QUnit.test( 'initValueView passes formatters', function( assert ) {
+ assert.expect( 1 );
+ var vvAndDom = getValueViewAndDom(),
+ $dom = vvAndDom.$dom,
+ htmlFormatter = {},
+ plaintextFormatter = {},
+ formatterFactory = {
+ getFormatter: function( _, outputType ) {
+ return outputType === 'text/html' ?
htmlFormatter : plaintextFormatter;
+ }
+ };
+
+ var valueViewBuilder = new wb.ValueViewBuilder(
+ null,
+ formatterFactory
+ );
+
+ valueViewBuilder.initValueView( $dom );
+
+ sinon.assert.calledWith( $dom.valueview, sinon.match( {
+ plaintextFormatter: plaintextFormatter,
+ htmlFormatter: htmlFormatter
} ) );
} );
@@ -68,7 +95,7 @@
var valueViewBuilder = new wb.ValueViewBuilder(
null,
- null,
+ { getFormatter: function() {} },
null,
'de',
null
@@ -89,7 +116,7 @@
var valueViewBuilder = new wb.ValueViewBuilder(
null,
- null,
+ { getFormatter: function() {} },
null,
null,
messageProvider
@@ -111,7 +138,10 @@
getType: sinon.spy( function() { return
dataValueType; } )
};
- var valueViewBuilder = new wb.ValueViewBuilder();
+ var valueViewBuilder = new wb.ValueViewBuilder(
+ null,
+ { getFormatter: function() {} }
+ );
valueViewBuilder.initValueView( $dom, null, dataValue );
@@ -132,7 +162,10 @@
getDataValueType: sinon.spy( function() {
return dataTypeDataValueType; } )
};
- var valueViewBuilder = new wb.ValueViewBuilder();
+ var valueViewBuilder = new wb.ValueViewBuilder(
+ null,
+ { getFormatter: function() {} }
+ );
valueViewBuilder.initValueView( $dom, dataType );
--
To view, visit https://gerrit.wikimedia.org/r/268387
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I60935f85f3f01b327c7d79cb3567c4a37521f004
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <[email protected]>
Gerrit-Reviewer: Adrian Heine <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits