Niedzielski has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/403684 )
Change subject: Hygiene: add more fetch failure test cases ...................................................................... Hygiene: add more fetch failure test cases Add fetch failure tests for integration and preview state. Bug: T183151 Change-Id: I1a541d96f3a83b99c26a5180ad5ee8626cda97d2 --- M tests/node-qunit/integration.test.js M tests/node-qunit/reducers/preview.test.js 2 files changed, 48 insertions(+), 5 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Popups refs/changes/84/403684/1 diff --git a/tests/node-qunit/integration.test.js b/tests/node-qunit/integration.test.js index 0be8023..4f3e9a2 100644 --- a/tests/node-qunit/integration.test.js +++ b/tests/node-qunit/integration.test.js @@ -9,7 +9,13 @@ var mw = mediaWiki, $ = jQuery, // Store the real wait to be actually used in tests - wait = WaitModule.default; + wait = WaitModule.default, + + /** + * Whether Gateway#getPageSummary is resolved or rejected. + * @enum {number} + */ + FETCH_RESOLUTION = { RESOLVE: 0, REJECT: 1 }; function identity( x ) { return x; } function constant( x ) { return function () { return x; }; } @@ -96,18 +102,19 @@ { get: identity } ); - this.dwell = function ( title, el, ev, fetchResponse ) { + this.dwell = function ( title, el, ev, fetchResponse, resolution = FETCH_RESOLUTION.RESOLVE ) { that.resetWait(); that.actions.linkDwell( title, el, ev, { getPageSummary: function () { - return $.Deferred().resolve( fetchResponse ).promise(); + var method = resolution === FETCH_RESOLUTION.RESOLVE ? 'resolve' : 'reject'; + return $.Deferred()[ method ]( fetchResponse ).promise(); } }, function () { return 'pagetoken'; } ); return that.waitPromise; }; - this.dwellAndShowPreview = function ( title, el, ev, fetchResponse ) { - that.dwell( title, el, ev, fetchResponse ); + this.dwellAndShowPreview = function ( title, el, ev, fetchResponse, reject = FETCH_RESOLUTION.RESOLVE ) { + that.dwell( title, el, ev, fetchResponse, reject ); that.waitDeferred.resolve(); // Wait for the next tick to resolve pending callbacks. N.B. that the @@ -194,6 +201,17 @@ } ); } ); +QUnit.test( 'in ACTIVE state, fetch fail switches it to DATA', function ( assert ) { + var store = this.store, + el = this.el; + + return this.dwellAndShowPreview( this.title, el, 'event', 42, FETCH_RESOLUTION.REJECT ).then( function () { + var state = store.getState(); + assert.equal( state.preview.activeLink, el ); + assert.equal( state.preview.shouldShow, false, 'Shouldn\'t show when data couldn\'t be fetched' ); + } ); +} ); + QUnit.test( 'in ACTIVE state, abandon start, and then end, switch it to INACTIVE', function ( assert ) { var that = this, el = this.el; diff --git a/tests/node-qunit/reducers/preview.test.js b/tests/node-qunit/reducers/preview.test.js index 2cde0fd..7d1d0bd 100644 --- a/tests/node-qunit/reducers/preview.test.js +++ b/tests/node-qunit/reducers/preview.test.js @@ -1,4 +1,5 @@ import preview from '../../../src/reducers/preview'; +import actionTypes from '../../../src/actionTypes'; QUnit.module( 'ext.popups/reducers#preview', { beforeEach: function () { @@ -213,6 +214,30 @@ } ); +QUnit.test( actionTypes.FETCH_FAILED, function ( assert ) { + var token = '1234567890', + state = { + activeToken: token, + isUserDwelling: true + }, + action = { + type: actionTypes.FETCH_FAILED, + token: token + }; + + assert.expect( 1 ); + + assert.deepEqual( + preview( state, action ), + { + // Previous state. + activeToken: state.activeToken, + isUserDwelling: true + }, + 'It should store the result and not transition states.' + ); +} ); + QUnit.test( 'PREVIEW_DWELL', function ( assert ) { var action = { type: 'PREVIEW_DWELL' -- To view, visit https://gerrit.wikimedia.org/r/403684 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1a541d96f3a83b99c26a5180ad5ee8626cda97d2 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Popups Gerrit-Branch: master Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: Sniedzielski <sniedziel...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits