jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/398805 )
Change subject: Set the form revision data after saving a form with a
FormChanger
......................................................................
Set the form revision data after saving a form with a FormChanger
Bug: T181253
Change-Id: Ie4310d173b0c6caa7fea5da4770f238a4a170424
---
M resources/entityChangers/FormChanger.js
M resources/view/ControllerViewFactory.js
M tests/qunit/entityChangers/FormChanger.tests.js
3 files changed, 67 insertions(+), 10 deletions(-)
Approvals:
jenkins-bot: Verified
Thiemo Kreuz (WMDE): Looks good to me, approved
diff --git a/resources/entityChangers/FormChanger.js
b/resources/entityChangers/FormChanger.js
index 45adf33..c84a3dc 100644
--- a/resources/entityChangers/FormChanger.js
+++ b/resources/entityChangers/FormChanger.js
@@ -8,13 +8,16 @@
* @constructor
*
* @param {mediaWiki.Api} api
+ * @param {wikibase.lexeme.RevisionStore} revisionStore
* @param {string} lexemeId
*/
var SELF = wb.lexeme.entityChangers.FormChanger = function
WbLexemeFormChanger(
api,
+ revisionStore,
lexemeId
) {
this.api = api;
+ this.revisionStore = revisionStore;
this.lexemeId = lexemeId;
};
@@ -24,6 +27,12 @@
* @private
*/
api: null,
+
+ /**
+ * @type {wikibase.lexeme.RevisionStore}
+ * @private
+ */
+ revisionStore: null,
/**
* @type {string}
@@ -37,7 +46,8 @@
*/
save: function ( form ) {
var formSerializer = new
wb.lexeme.serialization.FormSerializer(),
- lexemeDeserializer = new
wb.lexeme.serialization.LexemeDeserializer();
+ lexemeDeserializer = new
wb.lexeme.serialization.LexemeDeserializer(),
+ self = this;
if ( form.getId() ) {
return $.Deferred().resolve( form
).promise();// TODO: implement edit form
@@ -61,7 +71,9 @@
errorformat: 'plaintext',
bot: 1
} ).then( function ( data ) {
- return lexemeDeserializer.deserializeForm(
data.form );
+ var form = lexemeDeserializer.deserializeForm(
data.form );
+ self.revisionStore.setFormRevision(
data.lastrevid, form.getId() );
+ return form;
} ).catch( function ( code, response ) {
throw convertPlainTextErrorsToRepoApiError(
response.errors );
} );
diff --git a/resources/view/ControllerViewFactory.js
b/resources/view/ControllerViewFactory.js
index 599eb5b..268ff30 100644
--- a/resources/view/ControllerViewFactory.js
+++ b/resources/view/ControllerViewFactory.js
@@ -26,12 +26,12 @@
repoApiUrl = repoConfig.url +
repoConfig.scriptPath + '/api.php';
this._api = wb.api.getLocationAgnosticMwApi( repoApiUrl
);
- var revisionStore = new wb.lexeme.RevisionStore(
+ this._revisionStore = new wb.lexeme.RevisionStore(
entityChangersFactory.getRevisionStore()
);
var changersFactory = new
wb.entityChangers.EntityChangersFactory(
new wb.api.RepoApi( this._api ),
- revisionStore,
+ this._revisionStore,
entityChangersFactory.getEntity(),
function ( hookName ) {
var hook = mw.hook( hookName );
@@ -81,6 +81,12 @@
* @private
*/
SELF.prototype._api = null;
+
+ /**
+ * @type {wikibase.lexeme.RevisionStore}
+ * @private
+ */
+ SELF.prototype._revisionStore = null;
SELF.prototype.getEntityView = function ( startEditingCallback, lexeme,
$entityview ) {
return this._getView(
@@ -151,7 +157,7 @@
controller = this._getController(
this._toolbarFactory.getToolbarContainer(
formView.element ),
formView,
- new wb.lexeme.entityChangers.FormChanger(
this._api, lexemeId ),
+ new wb.lexeme.entityChangers.FormChanger(
this._api, this._revisionStore, lexemeId ),
removeCallback.bind( null, formView ),
form,
startEditingCallback
diff --git a/tests/qunit/entityChangers/FormChanger.tests.js
b/tests/qunit/entityChangers/FormChanger.tests.js
index 332fd24..101243b 100644
--- a/tests/qunit/entityChangers/FormChanger.tests.js
+++ b/tests/qunit/entityChangers/FormChanger.tests.js
@@ -18,9 +18,12 @@
var api = {
postWithToken: postWithToken
};
+ var revisionStore = {
+ setFormRevision: function () {}
+ };
var lexemeId = 'L11';
- var changer = new FormChanger( api, lexemeId );
+ var changer = new FormChanger( api, revisionStore, lexemeId );
var representations = new TermMap( { en: new Term( 'en', 'test
representation' ) } );
var form = new Form( null, representations, [ 'Q1', 'Q2' ] );
@@ -54,7 +57,7 @@
postWithToken: function () {
return $.Deferred().resolve( {
form: {
- id: 'F100',
+ id: 'L1-F100',
representations: {
en: {
language: 'en',
@@ -66,13 +69,16 @@
} ).promise();
}
};
+ var revisionStore = {
+ setFormRevision: function () {}
+ };
- var changer = new FormChanger( api, 'L1' );
+ var changer = new FormChanger( api, revisionStore, 'L1' );
var form = new Form( null, null, [] );
changer.save( form ).then( function ( form ) {
- assert.equal( form.getId(), 'F100', 'Saved Form ID' );
+ assert.equal( form.getId(), 'L1-F100', 'Saved Form ID'
);
assert.equal(
form.getRepresentations().getItemByKey( 'en'
).getText(),
'some representation',
@@ -83,6 +89,39 @@
[ 'Q1', 'Q2' ],
'Saved grammatical features'
);
+ done();
+ } ).catch( done );
+ } );
+
+ QUnit.test( 'New form - save - sets the base revision to the one from
API result', function ( assert ) {
+ var done = assert.async();
+
+ var api = {
+ postWithToken: function () {
+ return $.Deferred().resolve( {
+ form: { id: 'L1-F100' },
+ lastrevid: 303
+ } ).promise();
+ }
+ };
+ var revisionStore = {
+ formBaseRevisions: {
+ },
+ getFormRevision: function ( formId ) {
+ return this.formBaseRevisions[ formId ];
+ },
+ setFormRevision: function ( revision, formId ) {
+ this.formBaseRevisions[ formId ] = revision;
+
+ }
+ };
+
+ var changer = new FormChanger( api, revisionStore, 'L1' );
+
+ var form = new Form( null, null, [] );
+
+ changer.save( form ).then( function () {
+ assert.equal( revisionStore.getFormRevision( 'L1-F100'
), 303 );
done();
} ).catch( done );
} );
@@ -107,7 +146,7 @@
}
};
- var changer = new FormChanger( api, 'L1' );
+ var changer = new FormChanger( api, {}, 'L1' );
var form = new Form( null, null, [] );
--
To view, visit https://gerrit.wikimedia.org/r/398805
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie4310d173b0c6caa7fea5da4770f238a4a170424
Gerrit-PatchSet: 12
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Thiemo Kreuz (WMDE) <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits