jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/347175 )

Change subject: Created builder for API methods to reduce boilerplate code
......................................................................


Created builder for API methods to reduce boilerplate code

More refactoring EntityTermsChanger.tests.js

Change-Id: Ieb5b5e755440838714c28ecd54b8d0e6fb142cc3
---
M view/tests/qunit/wikibase/entityChangers/EntityTermsChanger.tests.js
1 file changed, 79 insertions(+), 76 deletions(-)

Approvals:
  WMDE-leszek: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/view/tests/qunit/wikibase/entityChangers/EntityTermsChanger.tests.js 
b/view/tests/qunit/wikibase/entityChangers/EntityTermsChanger.tests.js
index 119ce9d..23fd80f 100644
--- a/view/tests/qunit/wikibase/entityChangers/EntityTermsChanger.tests.js
+++ b/view/tests/qunit/wikibase/entityChangers/EntityTermsChanger.tests.js
@@ -38,11 +38,10 @@
                assert.expect( 2 );
                var done = assert.async();
                var api = {
-                       setLabel: sinon.spy( function () {
-                               var result = apiResponseForRevision( 
REVISION_ID )
-                                       .withLabel( 'some-lang', 'some label' );
-                               return $.Deferred().resolve( result ).promise();
-                       } )
+                       setLabel: sinon.spy(
+                               functionReturningSuccessfulResponse( 
REVISION_ID )
+                                       .withLabel( 'some-lang', 'some label' )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -71,12 +70,8 @@
                assert.expect( 2 );
                var done = assert.async();
                var api = {
-                       setLabel: sinon.spy( function () {
-                               var result = apiResponseForRevision( 
REVISION_ID )
-                                       .withLabel( 'some-lang', 'new label' );
-
-                               return $.Deferred().resolve( result ).promise();
-                       } )
+                       setLabel: sinon.spy( 
functionReturningSuccessfulResponse( REVISION_ID )
+                                       .withLabel( 'some-lang', 'new label' ) )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -104,7 +99,10 @@
                                        entity: {
                                                lastrevid: REVISION_ID,
                                                labels: {
-                                                       language: {}
+                                                       langCode: {
+                                                               language: 
'langCode',
+                                                               removed: ''
+                                                       }
                                                }
                                        }
                                } ).promise();
@@ -118,28 +116,20 @@
 
                entityTermsChanger.save(
                        newFingerprint().empty(),
-                       currentFingerprint().withLabel( 'language', 'old label' 
)
+                       currentFingerprint().withLabel( 'langCode', 'old label' 
)
                ).then( function () {
                        assert.ok( api.setLabel.calledOnce );
-                       sinon.assert.calledWith( api.setLabel, 'Q1', 
REVISION_ID, '', 'language' );
+                       sinon.assert.calledWith( api.setLabel, 'Q1', 
REVISION_ID, '', 'langCode' );
                } ).fail( failOnError( assert ) ).always( done );
        } );
 
        QUnit.test( 'save correctly handles API response for labels', function 
( assert ) {
                assert.expect( 1 );
                var api = {
-                       setLabel: sinon.spy( function () {
-                               return $.Deferred().resolve( {
-                                       entity: {
-                                               labels: {
-                                                       language: {
-                                                               value: 
'normalized label'
-                                                       },
-                                                       lastrevid: 'lastrevid'
-                                               }
-                                       }
-                               } ).promise();
-                       } )
+                       setLabel: sinon.spy(
+                               functionReturningSuccessfulResponse( 
'lastrevid' )
+                                       .withLabel( 'language', 'normalized 
label' )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -189,17 +179,10 @@
                var done = assert.async();
                var revisionId = 9;
                var api = {
-                       setDescription: sinon.spy( function () {
-                               var result = {
-                                       entity: {
-                                               lastrevid: revisionId,
-                                               descriptions: {
-                                                       'some-lang': { value: 
'description' }
-                                               }
-                                       }
-                               };
-                               return $.Deferred().resolve( result ).promise();
-                       } )
+                       setDescription: sinon.spy(
+                               functionReturningSuccessfulResponse( 
REVISION_ID )
+                                       .withDescription( 'some-lang', 
'description' )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -227,11 +210,10 @@
                var done = assert.async();
 
                var api = {
-                       setDescription: sinon.spy( function () {
-                               var apiResponse = apiResponseForRevision( 
REVISION_ID )
-                                       .withDescription( 'some-lang', 'new 
description' );
-                               return $.Deferred().resolve( apiResponse 
).promise();
-                       } )
+                       setDescription: sinon.spy(
+                               functionReturningSuccessfulResponse( 
REVISION_ID )
+                                       .withDescription( 'some-lang', 'new 
description' )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -262,7 +244,10 @@
                                return $.Deferred().resolve( {
                                        entity: {
                                                descriptions: {
-                                                       language: {}
+                                                       langCode: {
+                                                               language: 
'langCode',
+                                                               removed: ''
+                                                       }
                                                }
                                        }
                                } ).promise();
@@ -276,28 +261,20 @@
 
                entityTermsChanger.save(
                        newFingerprint().empty(),
-                       currentFingerprint().withDescription( 'language', 'old 
description' )
+                       currentFingerprint().withDescription( 'langCode', 'old 
description' )
                ).then( function () {
                        assert.ok( api.setDescription.calledOnce );
-                       sinon.assert.calledWith( api.setDescription, 'Q1', 
REVISION_ID, '', 'language' );
+                       sinon.assert.calledWith( api.setDescription, 'Q1', 
REVISION_ID, '', 'langCode' );
                } ).fail( failOnError( assert ) ).always( done );
        } );
 
        QUnit.test( 'save correctly handles API response for descriptions', 
function ( assert ) {
                assert.expect( 1 );
                var api = {
-                       setDescription: sinon.spy( function () {
-                               return $.Deferred().resolve( {
-                                       entity: {
-                                               descriptions: {
-                                                       language: {
-                                                               value: 
'normalized description'
-                                                       },
-                                                       lastrevid: 'lastrevid'
-                                               }
-                                       }
-                               } ).promise();
-                       } )
+                       setDescription: sinon.spy(
+                               functionReturningSuccessfulResponse( 
'lastrevid' )
+                                       .withDescription( 'language', 
'normalized description' )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -346,14 +323,13 @@
 
        QUnit.test( 'save performs correct API calls for new aliases', function 
( assert ) {
                assert.expect( 2 );
-               var revisionId = 9;
+               var revisionId = REVISION_ID;
                var done = assert.async();
                var api = {
-                       setAliases: sinon.spy( function () {
-                               var result = apiResponseForRevision( revisionId 
)
-                                       .withAliases( 'language', [ 'alias' ] );
-                               return $.Deferred().resolve( result ).promise();
-                       } )
+                       setAliases: sinon.spy(
+                               functionReturningSuccessfulResponse( revisionId 
)
+                                       .withAliases( 'language', [ 'alias' ] )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -374,11 +350,10 @@
                assert.expect( 2 );
                var done = assert.async();
                var api = {
-                       setAliases: sinon.spy( function () {
-                               var result = apiResponseForRevision( 
REVISION_ID )
-                                       .withAliases( 'language', [ 'new alias' 
] );
-                               return $.Deferred().resolve( result ).promise();
-                       } )
+                       setAliases: sinon.spy(
+                               functionReturningSuccessfulResponse( 
REVISION_ID )
+                                       .withAliases( 'language', [ 'new alias' 
] )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -406,9 +381,7 @@
                assert.expect( 2 );
                var done = assert.async();
                var api = {
-                       setAliases: sinon.spy( function () {
-                               return $.Deferred().resolve( 
apiResponseForRevision( REVISION_ID ) ).promise();
-                       } )
+                       setAliases: sinon.spy( 
functionReturningSuccessfulResponse( REVISION_ID ) )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -436,11 +409,10 @@
                assert.expect( 1 );
                var done = assert.async();
                var api = {
-                       setAliases: sinon.spy( function () {
-                               var result = apiResponseForRevision( 
'lastrevid' )
-                                       .withAliases( 'language', [ 'normalized 
alias' ] );
-                               return $.Deferred().resolve( result ).promise();
-                       } )
+                       setAliases: sinon.spy(
+                               functionReturningSuccessfulResponse( 
'lastrevid' )
+                                       .withAliases( 'language', [ 'normalized 
alias' ] )
+                       )
                };
                var entityTermsChanger = new EntityTermsChanger(
                        api,
@@ -588,4 +560,35 @@
                return new FingerprintBuilder();
        }
 
+       /**
+        * @param revisionId
+        * @returns {SuccessfulCallbackBuilder}
+        */
+       function functionReturningSuccessfulResponse( revisionId ) {
+               var result = apiResponseForRevision( revisionId );
+               /**
+                * @class SuccessfulCallbackBuilder
+                */
+               var callback = function () {
+                       return $.Deferred().resolve( result ).promise();
+               };
+
+               callback.withLabel = function callbackWithLabel( language, 
value ) {
+                       result.withLabel( language, value );
+                       return callback;
+               };
+
+               callback.withDescription = function callbackWithDescription( 
language, value ) {
+                       result.withDescription( language, value );
+                       return callback;
+               };
+
+               callback.withAliases = function callbackWithAliases( language, 
aliases ) {
+                       result.withAliases( language, aliases );
+                       return callback;
+               };
+
+               return callback;
+       }
+
 }( sinon, wikibase, jQuery ) );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ieb5b5e755440838714c28ecd54b8d0e6fb142cc3
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
Gerrit-Reviewer: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
Gerrit-Reviewer: Jakob <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (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

Reply via email to