WMDE-leszek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/397838 )

Change subject: Update the base revision after saving a form with a FormChanger
......................................................................

Update the base revision after saving a form with a FormChanger

Bug: T181253
Depends-On: Id3899764e6a76889f9344d8d6b79664445d35128
Change-Id: I7da9e552c7be5395b4b31ef2cef3e70e7cc6c47c
---
M resources/entityChangers/FormChanger.js
M resources/view/ControllerViewFactory.js
M tests/qunit/entityChangers/FormChanger.tests.js
3 files changed, 49 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme 
refs/changes/38/397838/2

diff --git a/resources/entityChangers/FormChanger.js 
b/resources/entityChangers/FormChanger.js
index 45adf33..67a2f40 100644
--- a/resources/entityChangers/FormChanger.js
+++ b/resources/entityChangers/FormChanger.js
@@ -12,9 +12,11 @@
         */
        var SELF = wb.lexeme.entityChangers.FormChanger = function 
WbLexemeFormChanger(
                api,
+               revisionStore,
                lexemeId
        ) {
                this.api = api;
+               this.revisionStore = revisionStore;
                this.lexemeId = lexemeId;
        };
 
@@ -24,6 +26,8 @@
                 * @private
                 */
                api: null,
+
+               revisionStore: null,
 
                /**
                 * @type {string}
@@ -37,7 +41,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,6 +66,8 @@
                                errorformat: 'plaintext',
                                bot: 1
                        } ).then( function ( data ) {
+                               self.revisionStore._revisions.baseRevision = 
data.lastrevid;
+
                                return lexemeDeserializer.deserializeForm( 
data.form );
                        } ).catch( function ( code, response ) {
                                throw convertPlainTextErrorsToRepoApiError( 
response.errors );
diff --git a/resources/view/ControllerViewFactory.js 
b/resources/view/ControllerViewFactory.js
index 3abe1db..0ba982b 100644
--- a/resources/view/ControllerViewFactory.js
+++ b/resources/view/ControllerViewFactory.js
@@ -138,7 +138,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._entityChangersFactory.getRevisionStore(), 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..96716e4 100644
--- a/tests/qunit/entityChangers/FormChanger.tests.js
+++ b/tests/qunit/entityChangers/FormChanger.tests.js
@@ -18,9 +18,14 @@
                var api = {
                        postWithToken: postWithToken
                };
+               var revisionStore = {
+                       _revisions: {
+                               baseRevision: 1
+                       }
+               };
 
                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' ] );
 
@@ -66,8 +71,13 @@
                                } ).promise();
                        }
                };
+               var revisionStore = {
+                       _revisions: {
+                               baseRevision: 1
+                       }
+               };
 
-               var changer = new FormChanger( api, 'L1' );
+               var changer = new FormChanger( api, revisionStore, 'L1' );
 
                var form = new Form( null, null, [] );
 
@@ -83,6 +93,33 @@
                                [ '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: {},
+                                       lastrevid: 303
+                               } ).promise();
+                       }
+               };
+               var revisionStore = {
+                       _revisions: {
+                               baseRevision: 1
+                       }
+               };
+
+               var changer = new FormChanger( api, revisionStore, 'L1' );
+
+               var form = new Form( null, null, [] );
+
+               changer.save( form ).then( function () {
+                       assert.equal( revisionStore._revisions.baseRevision, 
303 );
                        done();
                } ).catch( done );
        } );
@@ -107,7 +144,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/397838
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7da9e552c7be5395b4b31ef2cef3e70e7cc6c47c
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to