Introduce a proper mock for the RestApiService
Simplify all stubbing of the REST API in tests by adding a canonical
`stubRestApi` method.
Make sure to never use the <gr-rest-api-interface> element directly
anymore, thus paving the way for converting the element into a service
object and moving into to the services directory.
The reviewer should with looking at all non-test files first.
Change-Id: Ida7c9f0482477a0971fda106f18b8c51e20597c6
diff --git a/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_test.js b/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_test.js
index 869b518..d78961c 100644
--- a/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_test.js
@@ -18,6 +18,7 @@
import '../../../test/common-test-setup-karma.js';
import './gr-apply-fix-dialog.js';
import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromElement('gr-apply-fix-dialog');
@@ -56,7 +57,7 @@
suite('dialog open', () => {
setup(() => {
- sinon.stub(element.restApiService, 'getRobotCommentFixPreview')
+ stubRestApi('getRobotCommentFixPreview')
.returns(Promise.resolve({
f1: {
meta_a: {},
@@ -147,8 +148,7 @@
});
test('next button state updated when suggestions changed', done => {
- sinon.stub(element.restApiService, 'getRobotCommentFixPreview')
- .returns(Promise.resolve({}));
+ stubRestApi('getRobotCommentFixPreview').returns(Promise.resolve({}));
sinon.stub(element.$.applyFixOverlay, 'open').returns(Promise.resolve());
element.open({detail: {patchNum: 2, comment: ROBOT_COMMENT_WITH_ONE_FIX}})
@@ -162,38 +162,24 @@
});
});
- test('preview endpoint throws error should reset dialog', done => {
- sinon.stub(window, 'fetch').callsFake((url => {
- if (url.endsWith('/preview')) {
- return Promise.reject(new Error('backend error'));
- }
- return Promise.resolve({
- ok: true,
- text() { return Promise.resolve(''); },
- status: 200,
- });
- }));
- const errorStub = sinon.stub();
- document.addEventListener('network-error', errorStub);
+ test('preview endpoint throws error should reset dialog', async () => {
+ stubRestApi('getRobotCommentFixPreview').returns(
+ Promise.reject(new Error('backend error')));
element.open({detail: {patchNum: 2,
comment: ROBOT_COMMENT_WITH_TWO_FIXES}});
- flush(() => {
- assert.isTrue(errorStub.called);
- assert.equal(element._currentFix, undefined);
- done();
- });
+ await flush();
+ assert.equal(element._currentFix, undefined);
});
test('apply fix button should call apply ' +
'and navigate to change view', () => {
- sinon.stub(element.restApiService, 'applyFixSuggestion')
- .returns(Promise.resolve({ok: true}));
+ const stub = stubRestApi('applyFixSuggestion').returns(
+ Promise.resolve({ok: true}));
sinon.stub(GerritNav, 'navigateToChange');
element._currentFix = {fix_id: '123'};
return element._handleApplyFix().then(() => {
- assert.isTrue(element.restApiService.applyFixSuggestion
- .calledWithExactly('1', 2, '123'));
+ assert.isTrue(stub.calledWithExactly('1', 2, '123'));
assert.isTrue(GerritNav.navigateToChange.calledWithExactly({
_number: '1',
project: 'project',
@@ -211,14 +197,12 @@
});
test('should not navigate to change view if incorect reponse', done => {
- sinon.stub(element.restApiService, 'applyFixSuggestion')
- .returns(Promise.resolve({}));
+ const stub = stubRestApi('applyFixSuggestion').returns(Promise.resolve({}));
sinon.stub(GerritNav, 'navigateToChange');
element._currentFix = {fix_id: '123'};
element._handleApplyFix().then(() => {
- assert.isTrue(element.restApiService.applyFixSuggestion
- .calledWithExactly('1', 2, '123'));
+ assert.isTrue(stub.calledWithExactly('1', 2, '123'));
assert.isTrue(GerritNav.navigateToChange.notCalled);
assert.equal(element._isApplyFixLoading, false);
@@ -227,7 +211,7 @@
});
test('select fix forward and back of multiple suggested fixes', done => {
- sinon.stub(element.restApiService, 'getRobotCommentFixPreview')
+ stubRestApi('getRobotCommentFixPreview')
.returns(Promise.resolve({
f1: {
meta_a: {},
@@ -273,18 +257,8 @@
});
test('server-error should throw for failed apply call', async () => {
- sinon.stub(window, 'fetch').callsFake((url => {
- if (url.endsWith('/apply')) {
- return Promise.reject(new Error('backend error'));
- }
- return Promise.resolve({
- ok: true,
- text() { return Promise.resolve(''); },
- status: 200,
- });
- }));
- const errorStub = sinon.stub();
- document.addEventListener('network-error', errorStub);
+ stubRestApi('applyFixSuggestion').returns(
+ Promise.reject(new Error('backend error')));
sinon.stub(GerritNav, 'navigateToChange');
element._currentFix = {fix_id: '123'};
let expectedError;
@@ -293,7 +267,6 @@
});
assert.isOk(expectedError);
assert.isFalse(GerritNav.navigateToChange.called);
- assert.isTrue(errorStub.called);
});
});
diff --git a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js
index e107c16..94ec78f 100644
--- a/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-comment-api/gr-comment-api_test.js
@@ -21,6 +21,7 @@
import {isInRevisionOfPatchRange, isInBaseOfPatchRange, isDraftThread, isUnresolved, createCommentThreads} from '../../../utils/comment-util.js';
import {createDraft, createComment, createChangeComments, createCommentThread} from '../../../test/test-data-generators.js';
import {CommentSide, Side} from '../../../constants/constants.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromElement('gr-comment-api');
@@ -36,25 +37,20 @@
test('loads logged-out', () => {
const changeNum = 1234;
- sinon.stub(element.restApiService, 'getLoggedIn')
- .returns(Promise.resolve(false));
- sinon.stub(element.restApiService, 'getDiffComments')
- .returns(Promise.resolve({
+ stubRestApi('getLoggedIn').returns(Promise.resolve(false));
+ const diffCommentsSpy = stubRestApi('getDiffComments').returns(
+ Promise.resolve({
'foo.c': [{id: '123', message: 'foo bar', in_reply_to: '321'}],
}));
- sinon.stub(element.restApiService, 'getDiffRobotComments')
- .returns(Promise.resolve({'foo.c': [{id: '321', message: 'done'}]}));
- sinon.stub(element.restApiService, 'getDiffDrafts')
- .returns(Promise.resolve({}));
+ const diffRobotCommentsSpy = stubRestApi('getDiffRobotComments').returns(
+ Promise.resolve({'foo.c': [{id: '321', message: 'done'}]}));
+ const diffDraftsSpy = stubRestApi('getDiffDrafts').returns(
+ Promise.resolve({}));
return element.loadAll(changeNum).then(() => {
- assert.isTrue(element.restApiService.getDiffComments.calledWithExactly(
- changeNum));
- assert.isTrue(
- element.restApiService.getDiffRobotComments.calledWithExactly(
- changeNum));
- assert.isTrue(element.restApiService.getDiffDrafts.calledWithExactly(
- changeNum));
+ assert.isTrue(diffCommentsSpy.calledWithExactly(changeNum));
+ assert.isTrue(diffRobotCommentsSpy.calledWithExactly(changeNum));
+ assert.isTrue(diffDraftsSpy.calledWithExactly(changeNum));
assert.isOk(element._changeComments._comments);
assert.isOk(element._changeComments._robotComments);
assert.deepEqual(element._changeComments._drafts, {});
@@ -64,25 +60,21 @@
test('loads logged-in', () => {
const changeNum = 1234;
- sinon.stub(element.restApiService, 'getLoggedIn')
- .returns(Promise.resolve(true));
- sinon.stub(element.restApiService, 'getDiffComments')
- .returns(Promise.resolve({
+ stubRestApi('getLoggedIn').returns(Promise.resolve(true));
+ const getCommentsStub = stubRestApi('getDiffComments').returns(
+ Promise.resolve({
'foo.c': [{id: '123', message: 'foo bar', in_reply_to: '321'}],
- }));
- sinon.stub(element.restApiService, 'getDiffRobotComments')
+ })
+ );
+ const getRobotCommentsStub = stubRestApi('getDiffRobotComments')
.returns(Promise.resolve({'foo.c': [{id: '321', message: 'done'}]}));
- sinon.stub(element.restApiService, 'getDiffDrafts')
+ const getDraftsStub = stubRestApi('getDiffDrafts')
.returns(Promise.resolve({'foo.c': [{id: '555', message: 'ack'}]}));
return element.loadAll(changeNum).then(() => {
- assert.isTrue(element.restApiService.getDiffComments.calledWithExactly(
- changeNum));
- assert.isTrue(
- element.restApiService.getDiffRobotComments.calledWithExactly(
- changeNum));
- assert.isTrue(element.restApiService.getDiffDrafts.calledWithExactly(
- changeNum));
+ assert.isTrue(getCommentsStub.calledWithExactly(changeNum));
+ assert.isTrue(getRobotCommentsStub.calledWithExactly(changeNum));
+ assert.isTrue(getDraftsStub.calledWithExactly(changeNum));
assert.isOk(element._changeComments._comments);
assert.isOk(element._changeComments._robotComments);
assert.notDeepEqual(element._changeComments._drafts, {});
@@ -94,11 +86,11 @@
let robotCommentStub;
let draftStub;
setup(() => {
- commentStub = sinon.stub(element.restApiService, 'getDiffComments')
+ commentStub = stubRestApi('getDiffComments')
.returns(Promise.resolve({}));
- robotCommentStub = sinon.stub(element.restApiService,
+ robotCommentStub = stubRestApi(
'getDiffRobotComments').returns(Promise.resolve({}));
- draftStub = sinon.stub(element.restApiService, 'getDiffDrafts')
+ draftStub = stubRestApi('getDiffDrafts')
.returns(Promise.resolve({}));
});
@@ -138,11 +130,9 @@
suite('_changeComment methods', () => {
setup(done => {
const changeNum = 1234;
- stub('gr-rest-api-interface', {
- getDiffComments() { return Promise.resolve({}); },
- getDiffRobotComments() { return Promise.resolve({}); },
- getDiffDrafts() { return Promise.resolve({}); },
- });
+ stubRestApi('getDiffComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffRobotComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffDrafts').returns(Promise.resolve({}));
element.loadAll(changeNum).then(() => {
done();
});
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js
index b10b251..532922c 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js
@@ -18,7 +18,6 @@
import '../../../test/common-test-setup-karma.js';
import '../gr-diff/gr-diff-group.js';
import './gr-diff-builder.js';
-import '../../shared/gr-rest-api-interface/gr-rest-api-interface.js';
import {getMockDiffResponse} from '../../../test/mocks/diff-response.js';
import './gr-diff-builder-element.js';
import {stubBaseUrl} from '../../../test/test-utils.js';
@@ -29,6 +28,7 @@
import {GrDiffBuilder} from './gr-diff-builder.js';
import {GrDiffBuilderSideBySide} from './gr-diff-builder-side-by-side.js';
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromTemplate(html`
<gr-diff-builder>
@@ -60,10 +60,8 @@
setup(() => {
element = basicFixture.instantiate();
- stub('gr-rest-api-interface', {
- getLoggedIn() { return Promise.resolve(false); },
- getProjectConfig() { return Promise.resolve({}); },
- });
+ stubRestApi('getLoggedIn').returns(Promise.resolve(false));
+ stubRestApi('getProjectConfig').returns(Promise.resolve({}));
stubBaseUrl('/r');
prefs = {
line_length: 10,
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js
index 1e1d17e..3b366ce 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js
@@ -18,11 +18,10 @@
import '../../../test/common-test-setup-karma.js';
import '../gr-diff/gr-diff.js';
import './gr-diff-cursor.js';
-import '../../shared/gr-rest-api-interface/gr-rest-api-interface.js';
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
import {listenOnce} from '../../../test/test-utils.js';
import {getMockDiffResponse} from '../../../test/mocks/diff-response.js';
-import {appContext} from '../../../services/app-context.js';
+import {createDefaultDiffPrefs} from '../../../constants/constants.js';
const basicFixture = fixtureFromTemplate(html`
<gr-diff></gr-diff>
@@ -40,7 +39,6 @@
const fixtureElems = basicFixture.instantiate();
diffElement = fixtureElems[0];
cursorElement = fixtureElems[1];
- const restAPI = appContext.restApiService;
// Register the diff with the cursor.
cursorElement.push('diffs', diffElement);
@@ -61,10 +59,8 @@
diffElement.addEventListener('render', setupDone);
diff = getMockDiffResponse();
- restAPI.getDiffPreferences().then(prefs => {
- diffElement.prefs = prefs;
- diffElement.diff = diff;
- });
+ diffElement.prefs = createDefaultDiffPrefs();
+ diffElement.diff = diff;
});
test('diff cursor functionality (side-by-side)', () => {
@@ -572,20 +568,17 @@
let diffElements;
- setup(async () => {
+ setup(() => {
const fixtureElems = multiDiffFixture.instantiate();
diffElements = fixtureElems.slice(0, 3);
cursorElement = fixtureElems[3];
- const restAPI = appContext.restApiService;
// Register the diff with the cursor.
cursorElement.push('diffs', ...diffElements);
- await restAPI.getDiffPreferences().then(prefs => {
- for (const el of diffElements) {
- el.prefs = prefs;
- }
- });
+ for (const el of diffElements) {
+ el.prefs = createDefaultDiffPrefs();
+ }
});
function getTargetDiffIndex() {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
index d09c811..99e6391 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
@@ -25,6 +25,8 @@
import {createChange} from '../../../test/test-data-generators.js';
import {FILE} from '../gr-diff/gr-diff-line.js';
import {CoverageType} from '../../../types/types.js';
+import {stubRestApi} from '../../../test/test-utils.js';
+import {createDefaultDiffPrefs} from '../../../constants/constants.js';
const basicFixture = fixtureFromElement('gr-diff-host');
@@ -35,9 +37,7 @@
setup(() => {
getLoggedIn = false;
- stub('gr-rest-api-interface', {
- async getLoggedIn() { return getLoggedIn; },
- });
+ stubRestApi('getLoggedIn').returns(Promise.resolve(getLoggedIn));
element = basicFixture.instantiate();
element.changeNum = 123;
element.path = 'some/path';
@@ -130,18 +130,16 @@
test('ends total and syntax timer after syntax layer', async () => {
sinon.stub(element.reporting, 'diffViewContentDisplayed');
let notifySyntaxProcessed;
- sinon.stub(element.$.syntaxLayer, 'process').returns(new Promise(
- resolve => {
+ sinon.stub(element.$.syntaxLayer, 'process').returns(
+ new Promise(resolve => {
notifySyntaxProcessed = resolve;
- }));
- sinon.stub(element.restApiService, 'getDiff').returns(
- Promise.resolve({content: []}));
+ })
+ );
+ stubRestApi('getDiff').returns(Promise.resolve({content: []}));
element.patchRange = {};
element.change = createChange();
- element.restApiService.getDiffPreferences().then(prefs => {
- element.prefs = prefs;
- return element.reload(true);
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload(true);
// Multiple cascading microtasks are scheduled.
await flush();
notifySyntaxProcessed();
@@ -155,8 +153,7 @@
});
test('ends total timer w/ no syntax layer processing', async () => {
- sinon.stub(element.restApiService, 'getDiff').returns(
- Promise.resolve({content: []}));
+ stubRestApi('getDiff').returns(Promise.resolve({content: []}));
element.patchRange = {};
element.change = createChange();
element.reload();
@@ -177,19 +174,15 @@
resolve => {
notifySyntaxProcessed = resolve;
}));
- sinon.stub(element.restApiService, 'getDiff').returns(
+ stubRestApi('getDiff').returns(
Promise.resolve({content: []}));
element.patchRange = {};
element.change = createChange();
let reloadComplete = false;
- element.restApiService.getDiffPreferences()
- .then(prefs => {
- element.prefs = prefs;
- return element.reload();
- })
- .then(() => {
- reloadComplete = true;
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload().then(() => {
+ reloadComplete = true;
+ });
// Multiple cascading microtasks are scheduled.
await flush();
assert.isFalse(reloadComplete);
@@ -231,7 +224,7 @@
test('reload() loads files weblinks', () => {
const weblinksStub = sinon.stub(GerritNav, '_generateWeblinks')
.returns({name: 'stubb', url: '#s'});
- sinon.stub(element.restApiService, 'getDiff').returns(Promise.resolve({
+ stubRestApi('getDiff').returns(Promise.resolve({
content: [],
}));
element.projectName = 'test-project';
@@ -264,7 +257,7 @@
});
test('prefetch getDiff', done => {
- const diffRestApiStub = sinon.stub(element.restApiService, 'getDiff')
+ const diffRestApiStub = stubRestApi('getDiff')
.returns(Promise.resolve({content: []}));
element.changeNum = 123;
element.patchRange = {basePatchNum: 1, patchNum: 2};
@@ -277,9 +270,7 @@
});
test('_getDiff handles null diff responses', done => {
- stub('gr-rest-api-interface', {
- getDiff() { return Promise.resolve(null); },
- });
+ stubRestApi('getDiff').returns(Promise.resolve(null));
element.changeNum = 123;
element.patchRange = {basePatchNum: 1, patchNum: 2};
element.path = 'file.txt';
@@ -289,7 +280,7 @@
test('reload resolves on error', () => {
const onErrStub = sinon.stub(element, '_handleGetDiffError');
const error = new Response(null, {ok: false, status: 500});
- sinon.stub(element.restApiService, 'getDiff').callsFake(
+ stubRestApi('getDiff').callsFake(
(changeNum, basePatchNum, patchNum, path, whitespace, onErr) => {
onErr(error);
});
@@ -352,12 +343,6 @@
'wsAAAAAAAAAAAAA/////w==',
type: 'image/bmp',
};
- sinon.stub(element.restApiService,
- 'getB64FileContents')
- .callsFake(
- (changeId, patchNum, path, opt_parentIndex) => Promise.resolve(
- opt_parentIndex === 1 ? mockFile1 : mockFile2)
- );
element.patchRange = {basePatchNum: 'PARENT', patchNum: 1};
element.change = createChange();
@@ -385,8 +370,19 @@
content: [{skip: 66}],
binary: true,
};
- sinon.stub(element.restApiService, 'getDiff')
- .returns(Promise.resolve(mockDiff));
+ stubRestApi('getDiff').returns(Promise.resolve(mockDiff));
+ stubRestApi('getImagesForDiff').returns(Promise.resolve({
+ baseImage: {
+ ...mockFile1,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot.jpg',
+ },
+ revisionImage: {
+ ...mockFile2,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot.jpg',
+ },
+ }));
const rendered = () => {
// Recognizes that it should be an image diff.
@@ -442,11 +438,8 @@
};
element.addEventListener('render', rendered);
-
- element.restApiService.getDiffPreferences().then(prefs => {
- element.prefs = prefs;
- element.reload();
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload();
});
test('renders image diffs with a different file name', done => {
@@ -466,8 +459,19 @@
content: [{skip: 66}],
binary: true,
};
- sinon.stub(element.restApiService, 'getDiff')
- .returns(Promise.resolve(mockDiff));
+ stubRestApi('getDiff').returns(Promise.resolve(mockDiff));
+ stubRestApi('getImagesForDiff').returns(Promise.resolve({
+ baseImage: {
+ ...mockFile1,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot.jpg',
+ },
+ revisionImage: {
+ ...mockFile2,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot2.jpg',
+ },
+ }));
const rendered = () => {
// Recognizes that it should be an image diff.
@@ -525,11 +529,8 @@
};
element.addEventListener('render', rendered);
-
- element.restApiService.getDiffPreferences().then(prefs => {
- element.prefs = prefs;
- element.reload();
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload();
});
test('renders added image', done => {
@@ -548,8 +549,15 @@
content: [{skip: 66}],
binary: true,
};
- sinon.stub(element.restApiService, 'getDiff')
- .returns(Promise.resolve(mockDiff));
+ stubRestApi('getDiff').returns(Promise.resolve(mockDiff));
+ stubRestApi('getImagesForDiff').returns(Promise.resolve({
+ baseImage: null,
+ revisionImage: {
+ ...mockFile2,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot2.jpg',
+ },
+ }));
element.addEventListener('render', () => {
// Recognizes that it should be an image diff.
@@ -567,10 +575,8 @@
done();
});
- element.restApiService.getDiffPreferences().then(prefs => {
- element.prefs = prefs;
- element.reload();
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload();
});
test('renders removed image', done => {
@@ -589,8 +595,15 @@
content: [{skip: 66}],
binary: true,
};
- sinon.stub(element.restApiService, 'getDiff')
- .returns(Promise.resolve(mockDiff));
+ stubRestApi('getDiff').returns(Promise.resolve(mockDiff));
+ stubRestApi('getImagesForDiff').returns(Promise.resolve({
+ baseImage: {
+ ...mockFile1,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot.jpg',
+ },
+ revisionImage: null,
+ }));
element.addEventListener('render', () => {
// Recognizes that it should be an image diff.
@@ -608,10 +621,8 @@
done();
});
- element.restApiService.getDiffPreferences().then(prefs => {
- element.prefs = prefs;
- element.reload();
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload();
});
test('does not render disallowed image type', done => {
@@ -632,8 +643,15 @@
};
mockFile1.type = 'image/jpeg-evil';
- sinon.stub(element.restApiService, 'getDiff')
- .returns(Promise.resolve(mockDiff));
+ stubRestApi('getDiff').returns(Promise.resolve(mockDiff));
+ stubRestApi('getImagesForDiff').returns(Promise.resolve({
+ baseImage: {
+ ...mockFile1,
+ _expectedType: 'image/jpeg',
+ _name: 'carrot.jpg',
+ },
+ revisionImage: null,
+ }));
element.addEventListener('render', () => {
// Recognizes that it should be an image diff.
@@ -646,10 +664,8 @@
done();
});
- element.restApiService.getDiffPreferences().then(prefs => {
- element.prefs = prefs;
- element.reload();
- });
+ element.prefs = createDefaultDiffPrefs();
+ element.reload();
});
});
});
@@ -707,7 +723,7 @@
const mockBlame = [{id: 'commit id', ranges: [{start: 1, end: 2}]}];
const showAlertStub = sinon.stub();
element.addEventListener('show-alert', showAlertStub);
- const getBlameStub = sinon.stub(element.restApiService, 'getBlame')
+ const getBlameStub = stubRestApi('getBlame')
.returns(Promise.resolve(mockBlame));
element.changeNum = 42;
element.patchRange = {patchNum: 5, basePatchNum: 4};
@@ -725,7 +741,7 @@
const mockBlame = [];
const showAlertStub = sinon.stub();
element.addEventListener('show-alert', showAlertStub);
- sinon.stub(element.restApiService, 'getBlame')
+ stubRestApi('getBlame')
.returns(Promise.resolve(mockBlame));
element.changeNum = 42;
element.patchRange = {patchNum: 5, basePatchNum: 4};
@@ -1272,7 +1288,7 @@
test('starts syntax layer processing on render event', async () => {
sinon.stub(element.$.syntaxLayer, 'process')
.returns(Promise.resolve());
- sinon.stub(element.restApiService, 'getDiff').returns(
+ stubRestApi('getDiff').returns(
Promise.resolve({content: []}));
element.reload();
await flush();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector_test.js b/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector_test.js
index 049f01d..f554227 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-mode-selector/gr-diff-mode-selector_test.js
@@ -18,6 +18,7 @@
import '../../../test/common-test-setup-karma.js';
import './gr-diff-mode-selector.js';
import {DiffViewMode} from '../../../constants/constants.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromElement('gr-diff-mode-selector');
@@ -40,7 +41,7 @@
});
test('setMode', () => {
- const saveStub = sinon.stub(element.restApiService, 'savePreferences');
+ const saveStub = stubRestApi('savePreferences');
// Setting the mode initially does not save prefs.
element.saveOnChange = true;
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
index 72e1a8f..91d0187 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
@@ -29,6 +29,7 @@
createRevisions,
createComment,
} from '../../../test/test-data-generators.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromElement('gr-diff-view');
@@ -88,43 +89,24 @@
};
}
+ let getDiffChangeDetailStub;
+ let getReviewedFilesStub;
setup(async () => {
clock = sinon.useFakeTimers();
- stub('gr-rest-api-interface', {
- getConfig() {
- return Promise.resolve({change: {}});
- },
- getLoggedIn() {
- return Promise.resolve(false);
- },
- getProjectConfig() {
- return Promise.resolve({});
- },
- getDiffChangeDetail() {
- return Promise.resolve({});
- },
- getChangeFiles() {
- return Promise.resolve({});
- },
- saveFileReviewed() {
- return Promise.resolve();
- },
- getDiffComments() {
- return Promise.resolve({});
- },
- getDiffRobotComments() {
- return Promise.resolve({});
- },
- getDiffDrafts() {
- return Promise.resolve({});
- },
- getPortedComments() {
- return Promise.resolve({});
- },
- getReviewedFiles() {
- return Promise.resolve([]);
- },
- });
+ stubRestApi('getConfig').returns(Promise.resolve({change: {}}));
+ stubRestApi('getLoggedIn').returns(Promise.resolve(false));
+ stubRestApi('getProjectConfig').returns(Promise.resolve({}));
+ getDiffChangeDetailStub = stubRestApi('getDiffChangeDetail').returns(
+ Promise.resolve({}));
+ stubRestApi('getChangeFiles').returns(Promise.resolve({}));
+ stubRestApi('saveFileReviewed').returns(Promise.resolve());
+ stubRestApi('getDiffComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffRobotComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffDrafts').returns(Promise.resolve({}));
+ stubRestApi('getPortedComments').returns(Promise.resolve({}));
+ getReviewedFilesStub = stubRestApi('getReviewedFiles').returns(
+ Promise.resolve([]));
+
element = basicFixture.instantiate();
element._changeNum = '42';
element._path = 'some/path.txt';
@@ -345,13 +327,11 @@
sinon.stub(element, '_loadBlame');
sinon.stub(element.$.diffHost, 'reload').returns(Promise.resolve());
sinon.spy(element, '_paramsChanged');
- element.restApiService.getDiffChangeDetail.restore();
- sinon.stub(element.restApiService, 'getDiffChangeDetail')
- .returns(
- Promise.resolve({
- ...createChange(),
- revisions: createRevisions(11),
- }));
+ getDiffChangeDetailStub.returns(
+ Promise.resolve({
+ ...createChange(),
+ revisions: createRevisions(11),
+ }));
element._patchRange = {
patchNum: 2,
basePatchNum: 1,
@@ -1218,7 +1198,7 @@
const prefsPromise = new Promise(resolve => {
resolvePrefs = resolve;
});
- sinon.stub(element.restApiService, 'getPreferences')
+ stubRestApi('getPreferences')
.callsFake(() => prefsPromise);
// Attach a new gr-diff-view so we can intercept the preferences fetch.
@@ -1607,10 +1587,7 @@
test('_getReviewedStatus', () => {
const promises = [];
- element.restApiService.getReviewedFiles.restore();
-
- sinon.stub(element.restApiService, 'getReviewedFiles')
- .returns(Promise.resolve(['path']));
+ getReviewedFilesStub.returns(Promise.resolve(['path']));
promises.push(element._getReviewedStatus(true, null, null, 'path')
.then(reviewed => assert.isFalse(reviewed)));
@@ -1674,7 +1651,7 @@
test('_paramsChanged sets in projectLookup', () => {
sinon.stub(element, '_initLineOfInterestAndCursor');
- const setStub = sinon.stub(element.restApiService, 'setInProjectLookup');
+ const setStub = stubRestApi('setInProjectLookup');
element._paramsChanged({
view: GerritNav.View.DIFF,
changeNum: 101,
@@ -1851,18 +1828,17 @@
'file1.txt': {},
'a/b/test.c': {},
};
- stub('gr-rest-api-interface', {
- getConfig() { return Promise.resolve({change: {}}); },
- getLoggedIn() { return Promise.resolve(false); },
- getProjectConfig() { return Promise.resolve({}); },
- getDiffChangeDetail() { return Promise.resolve({}); },
- getChangeFiles() { return Promise.resolve(changedFiles); },
- saveFileReviewed() { return Promise.resolve(); },
- getDiffComments() { return Promise.resolve({}); },
- getDiffRobotComments() { return Promise.resolve({}); },
- getDiffDrafts() { return Promise.resolve({}); },
- getReviewedFiles() { return Promise.resolve([]); },
- });
+ stubRestApi('getConfig').returns(Promise.resolve({change: {}}));
+ stubRestApi('getLoggedIn').returns(Promise.resolve(true));
+ stubRestApi('getProjectConfig').returns(Promise.resolve({}));
+ stubRestApi('getDiffChangeDetail').returns(Promise.resolve({}));
+ stubRestApi('getChangeFiles').returns(Promise.resolve(changedFiles));
+ stubRestApi('saveFileReviewed').returns(Promise.resolve());
+ stubRestApi('getDiffComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffRobotComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffDrafts').returns(Promise.resolve({}));
+ stubRestApi('getReviewedFiles').returns(
+ Promise.resolve([]));
element = basicFixture.instantiate();
element._changeNum = '42';
return element._loadComments();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
index c5a8db4..fbe996d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
@@ -16,7 +16,6 @@
*/
import '../../../test/common-test-setup-karma.js';
-import '../../shared/gr-rest-api-interface/gr-rest-api-interface.js';
import {getMockDiffResponse} from '../../../test/mocks/diff-response.js';
import './gr-diff.js';
import {flush} from '@polymer/polymer/lib/legacy/polymer.dom.js';
@@ -26,6 +25,7 @@
import {runA11yAudit} from '../../../test/a11y-test-utils.js';
import '@polymer/paper-button/paper-button.js';
import {SPECIAL_PATCH_SET_NUM} from '../../../utils/patch-set-util.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromElement('gr-diff');
@@ -176,9 +176,7 @@
suite('not logged in', () => {
setup(() => {
const getLoggedInPromise = Promise.resolve(false);
- stub('gr-rest-api-interface', {
- getLoggedIn() { return getLoggedInPromise; },
- });
+ stubRestApi('getLoggedIn').returns(getLoggedInPromise);
element = basicFixture.instantiate();
return getLoggedInPromise;
});
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js
index 15841d9..8b40db3 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js
@@ -26,6 +26,7 @@
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
import {SPECIAL_PATCH_SET_NUM} from '../../../utils/patch-set-util.js';
import {ChangeComments} from '../gr-comment-api/gr-comment-api.js';
+import {stubRestApi} from '../../../test/test-utils.js';
const commentApiMockElement = createCommentApiMockWithTemplateElement(
'gr-patch-range-select-comment-api-mock', html`
@@ -50,11 +51,9 @@
}
setup(() => {
- stub('gr-rest-api-interface', {
- getDiffComments() { return Promise.resolve({}); },
- getDiffRobotComments() { return Promise.resolve({}); },
- getDiffDrafts() { return Promise.resolve({}); },
- });
+ stubRestApi('getDiffComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffRobotComments').returns(Promise.resolve({}));
+ stubRestApi('getDiffDrafts').returns(Promise.resolve({}));
// Element must be wrapped in an element with direct access to the
// comment API.