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