Merge "Fix trying to display checks for selected ps while still loading"
diff --git a/polygerrit-ui/app/api/diff.ts b/polygerrit-ui/app/api/diff.ts
index ad83fb8..724141f 100644
--- a/polygerrit-ui/app/api/diff.ts
+++ b/polygerrit-ui/app/api/diff.ts
@@ -406,17 +406,26 @@
): void;
}
-// The current setup requires API users to register GrDiff instances with the
-// cursor, but we do not at this point want to expose the API that GrDiffCursor
-// uses to the public as it is likely to change. So for now, we allow any type
-// and cast. This works fine so long as API users do provide whatever the
-// gr-diff tag creates.
-export type GrDiff = unknown;
+/** An instance of the GrDiff Webcomponent */
+export interface GrDiff extends HTMLElement {
+ /**
+ * Return line number element for reading only,
+ *
+ * This is useful e.g. to determine where on screen certain lines are,
+ * whether they are covered up etc.
+ */
+ getLineNumEls(side: Side): readonly HTMLElement[];
+}
/** A service to interact with the line cursor in gr-diff instances. */
export declare interface GrDiffCursor {
- replaceDiffs(diffs: GrDiff[]): void;
- unregisterDiff(diff: GrDiff): void;
+ // The current setup requires API users to register GrDiff instances with the
+ // cursor, but we do not at this point want to expose the API that GrDiffCursor
+ // uses to the public as it is likely to change. So for now, we allow any type
+ // and cast. This works fine so long as API users do provide whatever the
+ // gr-diff tag creates.
+ replaceDiffs(diffs: unknown[]): void;
+ unregisterDiff(diff: unknown): void;
isAtStart(): boolean;
isAtEnd(): boolean;
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.ts b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.ts
index ab8e404..516a31e 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.ts
@@ -939,7 +939,7 @@
});
suite('plugin endpoints', () => {
- test('endpoint params', done => {
+ test('endpoint params', async () => {
element.change = createParsedChange();
element.revision = createRevision();
interface MetadataGrEndpointDecorator extends GrEndpointDecorator {
@@ -961,12 +961,10 @@
'http://some/plugins/url.js'
);
getPluginLoader().loadPlugins([]);
- flush(() => {
- assert.strictEqual(hookEl!.plugin, plugin);
- assert.strictEqual(hookEl!.change, element.change);
- assert.strictEqual(hookEl!.revision, element.revision);
- done();
- });
+ await flush();
+ assert.strictEqual(hookEl!.plugin, plugin!);
+ assert.strictEqual(hookEl!.change, element.change);
+ assert.strictEqual(hookEl!.revision, element.revision);
});
});
});
diff --git a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog_test.ts b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog_test.ts
index 52ec8af..ea3c01d 100644
--- a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog_test.ts
@@ -31,6 +31,7 @@
RepoName,
} from '../../../types/common';
import {GrDownloadDialog} from './gr-download-dialog';
+import {mockPromise} from '../../../test/test-utils';
const basicFixture = fixtureFromElement('gr-download-dialog');
@@ -168,14 +169,16 @@
);
});
- test('close event', done => {
+ test('close event', async () => {
+ const closeCalled = mockPromise();
element.addEventListener('close', () => {
- done();
+ closeCalled.resolve();
});
const closeButton = element.shadowRoot!.querySelector(
'.closeButtonContainer gr-button'
);
tap(closeButton!);
+ await closeCalled;
});
});
diff --git a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list_test.ts b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list_test.ts
index ae9af4a..15bc6bf 100644
--- a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list_test.ts
@@ -599,7 +599,7 @@
resetPlugins();
});
- test('endpoint params', done => {
+ test('endpoint params', async () => {
element.change = {...createParsedChange(), labels: {}};
interface RelatedChangesListGrEndpointDecorator
extends GrEndpointDecorator {
@@ -620,11 +620,9 @@
'http://some/plugins/url1.js'
);
getPluginLoader().loadPlugins([]);
- flush(() => {
- assert.strictEqual(hookEl.plugin, plugin);
- assert.strictEqual(hookEl.change, element.change);
- done();
- });
+ await flush();
+ assert.strictEqual(hookEl!.plugin, plugin!);
+ assert.strictEqual(hookEl!.change, element.change);
});
});
});
diff --git a/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.ts b/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.ts
index 4b57651..354d360 100644
--- a/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-reviewer-list/gr-reviewer-list_test.ts
@@ -17,7 +17,11 @@
import '../../../test/common-test-setup-karma';
import './gr-reviewer-list';
-import {queryAndAssert, stubRestApi} from '../../../test/test-utils';
+import {
+ mockPromise,
+ queryAndAssert,
+ stubRestApi,
+} from '../../../test/test-utils';
import {GrReviewerList} from './gr-reviewer-list';
import {
createAccountDetailWithId,
@@ -53,12 +57,14 @@
);
});
- test('add reviewer button opens reply dialog', done => {
+ test('add reviewer button opens reply dialog', async () => {
+ const dialogShown = mockPromise();
element.addEventListener('show-reply-dialog', () => {
- done();
+ dialogShown.resolve();
});
- flush();
+ await flush();
tap(queryAndAssert(element, '.addReviewer'));
+ await dialogShown;
});
test('only show remove for removable reviewers', () => {
diff --git a/polygerrit-ui/app/elements/core/gr-error-dialog/gr-error-dialog_test.ts b/polygerrit-ui/app/elements/core/gr-error-dialog/gr-error-dialog_test.ts
index fa57a23..2dec8d2 100644
--- a/polygerrit-ui/app/elements/core/gr-error-dialog/gr-error-dialog_test.ts
+++ b/polygerrit-ui/app/elements/core/gr-error-dialog/gr-error-dialog_test.ts
@@ -17,7 +17,7 @@
import * as MockInteractions from '@polymer/iron-test-helpers/mock-interactions';
import '../../../test/common-test-setup-karma';
-import {queryAndAssert} from '../../../test/test-utils';
+import {mockPromise, queryAndAssert} from '../../../test/test-utils';
import {GrDialog} from '../../shared/gr-dialog/gr-dialog';
import {GrErrorDialog} from './gr-error-dialog';
@@ -30,10 +30,12 @@
element = basicFixture.instantiate();
});
- test('dismiss tap fires event', done => {
- element.addEventListener('dismiss', () => done());
+ test('dismiss tap fires event', async () => {
+ const dismissCalled = mockPromise();
+ element.addEventListener('dismiss', () => dismissCalled.resolve());
MockInteractions.tap(
(queryAndAssert(element, '#dialog') as GrDialog).$.confirm
);
+ await dismissCalled;
});
});
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
index 7c437fd..0b42f9f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
@@ -69,6 +69,7 @@
import {
CreateCommentEventDetail as CreateCommentEventDetailApi,
RenderPreferences,
+ GrDiff as GrDiffApi,
} from '../../../api/diff';
import {isSafari, toggleClass} from '../../../utils/dom-util';
import {assertIsDefined} from '../../../utils/common-util';
@@ -109,7 +110,7 @@
}
@customElement('gr-diff')
-export class GrDiff extends PolymerElement {
+export class GrDiff extends PolymerElement implements GrDiffApi {
static get template() {
return htmlTemplate;
}
@@ -322,6 +323,12 @@
super.disconnectedCallback();
}
+ getLineNumEls(side: Side): HTMLElement[] {
+ return Array.from(
+ this.root?.querySelectorAll<HTMLElement>(`.lineNum.${side}`) ?? []
+ );
+ }
+
showNoChangeMessage(
loading?: boolean,
prefs?: DiffPreferencesInfo,
diff --git a/polygerrit-ui/app/elements/settings/gr-agreements-list/gr-agreements-list_test.ts b/polygerrit-ui/app/elements/settings/gr-agreements-list/gr-agreements-list_test.ts
index f08976f..4891759 100644
--- a/polygerrit-ui/app/elements/settings/gr-agreements-list/gr-agreements-list_test.ts
+++ b/polygerrit-ui/app/elements/settings/gr-agreements-list/gr-agreements-list_test.ts
@@ -25,7 +25,7 @@
suite('gr-agreements-list tests', () => {
let element: GrAgreementsList;
- setup(done => {
+ setup(async () => {
const agreements: ContributorAgreementInfo[] = [
{
url: 'some url',
@@ -38,9 +38,8 @@
element = basicFixture.instantiate();
- element.loadData().then(() => {
- flush(done);
- });
+ await element.loadData();
+ await flush();
});
test('renders', () => {
diff --git a/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view_test.ts b/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view_test.ts
index 9f54cd1..d634483 100644
--- a/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view_test.ts
+++ b/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view_test.ts
@@ -125,16 +125,15 @@
},
];
- setup(done => {
+ setup(async () => {
stubRestApi('getConfig').returns(Promise.resolve(config));
stubRestApi('getAccountGroups').returns(Promise.resolve(groups));
stubRestApi('getAccountAgreements').returns(
Promise.resolve(signedAgreements)
);
element = basicFixture.instantiate();
- element.loadData().then(() => {
- flush(done);
- });
+ await element.loadData();
+ await flush();
});
test('renders as expected with signed agreement', () => {