Change window.stub to stub a single method and return it Change-Id: Icdf8a5db31929c7a0ce99ef6118e9ce4cd9657c6
diff --git a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.js b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.js index 992ac54..69c218c 100644 --- a/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.js +++ b/polygerrit-ui/app/elements/admin/gr-admin-view/gr-admin-view_test.js
@@ -430,9 +430,7 @@ suite('repos', () => { setup(() => { - stub('gr-repo-access', { - _repoChanged: () => {}, - }); + stub('gr-repo-access', '_repoChanged').callsFake(() => {}); }); test('repo list', () => { @@ -499,12 +497,8 @@ suite('groups', () => { let getGroupConfigStub; setup(() => { - stub('gr-group', { - _loadGroup: () => Promise.resolve({}), - }); - stub('gr-group-members', { - _loadGroupDetails: () => {}, - }); + stub('gr-group', '_loadGroup').callsFake(() => Promise.resolve({})); + stub('gr-group-members', '_loadGroupDetails').callsFake(() => {}); getGroupConfigStub = stubRestApi('getGroupConfig'); getGroupConfigStub.returns(Promise.resolve({
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js index a1e227b..b8ba86c 100644 --- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js +++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.js
@@ -84,13 +84,11 @@ stubRestApi('getDiffRobotComments').returns(Promise.resolve({})); stubRestApi('getDiffDrafts').returns(Promise.resolve({})); stubRestApi('getAccountCapabilities').returns(Promise.resolve({})); - stub('gr-date-formatter', { - _loadTimeFormat() { return Promise.resolve(''); }, - }); - stub('gr-diff-host', { - reload() { return Promise.resolve(); }, - prefetchDiff() {}, - }); + stub('gr-date-formatter', '_loadTimeFormat').callsFake(() => + Promise.resolve('') + ); + stub('gr-diff-host', 'reload').callsFake(() => Promise.resolve()); + stub('gr-diff-host', 'prefetchDiff').callsFake(() => {}); // Element must be wrapped in an element with direct access to the // comment API. @@ -1409,13 +1407,11 @@ stubRestApi('getDiffComments').returns(Promise.resolve({})); stubRestApi('getDiffRobotComments').returns(Promise.resolve({})); stubRestApi('getDiffDrafts').returns(Promise.resolve({})); - stub('gr-date-formatter', { - _loadTimeFormat() { return Promise.resolve(''); }, - }); - stub('gr-diff-host', { - reload() { return Promise.resolve(); }, - prefetchDiff() {}, - }); + stub('gr-date-formatter', '_loadTimeFormat').callsFake(() => + Promise.resolve('') + ); + stub('gr-diff-host', 'reload').callsFake(() => Promise.resolve()); + stub('gr-diff-host', 'prefetchDiff').callsFake(() => {}); // Element must be wrapped in an element with direct access to the // comment API.
diff --git a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.ts b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.ts index f764373..784b440 100644 --- a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.ts +++ b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.ts
@@ -35,11 +35,7 @@ setup(() => { stubRestApi('probePath').returns(Promise.resolve(false)); - stub('gr-main-header', { - _loadAccount() { - return Promise.resolve(); - }, - }); + stub('gr-main-header', '_loadAccount').callsFake(() => Promise.resolve()); element = basicFixture.instantiate(); });
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js index 11b1f38..07e83a8 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js +++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js
@@ -266,10 +266,8 @@ setup(() => { contentStubs = []; - stub('gr-selection-action-box', { - placeAbove: sinon.stub(), - placeBelow: sinon.stub(), - }); + stub('gr-selection-action-box', 'placeAbove'); + stub('gr-selection-action-box', 'placeBelow'); diff = element.querySelector('#diffTable'); builder = { getContentTdByLine: sinon.stub(),
diff --git a/polygerrit-ui/app/elements/gr-app_test.js b/polygerrit-ui/app/elements/gr-app_test.js index 1a04411..8178c89 100644 --- a/polygerrit-ui/app/elements/gr-app_test.js +++ b/polygerrit-ui/app/elements/gr-app_test.js
@@ -30,12 +30,8 @@ setup(done => { sinon.stub(appContext.reportingService, 'appStarted'); - stub('gr-account-dropdown', { - _getTopContent: sinon.stub(), - }); - stub('gr-router', { - start: sinon.stub(), - }); + stub('gr-account-dropdown', '_getTopContent'); + stub('gr-router', 'start'); stubRestApi('getAccount').returns(Promise.resolve({})); stubRestApi('getAccountCapabilities').returns(Promise.resolve({})); configStub = stubRestApi('getConfig').returns(Promise.resolve({
diff --git a/polygerrit-ui/app/elements/plugins/gr-popup-interface/gr-plugin-popup_test.js b/polygerrit-ui/app/elements/plugins/gr-popup-interface/gr-plugin-popup_test.js index f2d83e8..6ce77b1 100644 --- a/polygerrit-ui/app/elements/plugins/gr-popup-interface/gr-plugin-popup_test.js +++ b/polygerrit-ui/app/elements/plugins/gr-popup-interface/gr-plugin-popup_test.js
@@ -25,10 +25,8 @@ setup(() => { element = basicFixture.instantiate(); - stub('gr-overlay', { - open: sinon.stub().returns(Promise.resolve()), - close: sinon.stub(), - }); + stub('gr-overlay', 'open').callsFake(() => Promise.resolve()); + stub('gr-overlay', 'close'); }); test('exists', () => {
diff --git a/polygerrit-ui/app/elements/shared/gr-avatar/gr-avatar_test.js b/polygerrit-ui/app/elements/shared/gr-avatar/gr-avatar_test.js index 0eef5a7..df8632f 100644 --- a/polygerrit-ui/app/elements/shared/gr-avatar/gr-avatar_test.js +++ b/polygerrit-ui/app/elements/shared/gr-avatar/gr-avatar_test.js
@@ -103,9 +103,9 @@ suite('config set', () => { setup(() => { - stub('gr-avatar', { - _getConfig: () => Promise.resolve({plugin: {has_avatars: true}}), - }); + stub('gr-avatar', '_getConfig').callsFake(() => + Promise.resolve({plugin: {has_avatars: true}}) + ); element = basicFixture.instantiate(); }); @@ -141,9 +141,9 @@ let element; setup(() => { - stub('gr-avatar', { - _getConfig: () => Promise.resolve({plugin: {has_avatars: true}}), - }); + stub('gr-avatar', '_getConfig').callsFake(() => + Promise.resolve({plugin: {has_avatars: true}}) + ); element = basicFixture.instantiate(); }); @@ -169,9 +169,7 @@ let element; setup(() => { - stub('gr-avatar', { - _getConfig: () => Promise.resolve({}), - }); + stub('gr-avatar', '_getConfig').callsFake(() => Promise.resolve({})); element = basicFixture.instantiate(); });
diff --git a/polygerrit-ui/app/test/common-test-setup.ts b/polygerrit-ui/app/test/common-test-setup.ts index 848eeaf..016c1e4 100644 --- a/polygerrit-ui/app/test/common-test-setup.ts +++ b/polygerrit-ui/app/test/common-test-setup.ts
@@ -33,7 +33,7 @@ TestKeyboardShortcutBinder, } from './test-utils'; import {_testOnly_getShortcutManagerInstance} from '../mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin'; -import sinon, {SinonSpy} from 'sinon/pkg/sinon-esm'; +import sinon from 'sinon/pkg/sinon-esm'; import {safeTypesBridge} from '../utils/safe-types-util'; import {_testOnly_initGerritPluginApi} from '../elements/shared/gr-js-api-interface/gr-gerrit'; import {initGlobalVariables} from '../elements/gr-app-global-var-init'; @@ -126,22 +126,18 @@ // For karma always set our implementation // (karma doesn't provide the stub method) -function stubImpl<T extends keyof HTMLElementTagNameMap>( - tagName: T, - implementation: Partial<HTMLElementTagNameMap[T]> -) { +function stubImpl< + T extends keyof HTMLElementTagNameMap, + K extends keyof HTMLElementTagNameMap[T] +>(tagName: T, method: K) { // This method is inspired by web-component-tester method const proto = document.createElement(tagName).constructor .prototype as HTMLElementTagNameMap[T]; - const stubs: SinonSpy[] = []; - for (const [key, value] of Object.entries(implementation)) { - stubs.push(sinon.stub(proto, key).callsFake(value)); - } + const stub = sinon.stub(proto, method); registerTestCleanup(() => { - stubs.forEach(stub => { - stub.restore(); - }); + stub.restore(); }); + return stub; } window.stub = stubImpl;