summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhruv Srivastava <dhruvsri@google.com>2023-08-23 15:28:46 +0200
committerDhruv Srivastava <dhruvsri@google.com>2023-08-23 13:40:17 +0000
commit3094684f872033331552f8124ee14275fcecca9a (patch)
tree1c674a992668e84de1d087d43c728d1aad3e41b2
parent783f2f00edb9318a477a363296c70a93b4e67241 (diff)
Add test that sendReply metric is fired after SaveReview
Release-Notes: skip Change-Id: I848594523a24a3cc0f50c7ed96a8c0300ffce98a
-rw-r--r--polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts
index 5766d80762..7855834fcf 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts
@@ -13,6 +13,7 @@ import {
query,
queryAll,
queryAndAssert,
+ stubReporting,
stubRestApi,
waitUntilVisible,
} from '../../../test/test-utils';
@@ -69,6 +70,7 @@ import {
} from '../../../models/comments/comments-model';
import {isOwner} from '../../../utils/change-util';
import {createNewPatchsetLevel} from '../../../utils/comment-util';
+import {Timing} from '../../../constants/reporting';
function cloneableResponse(status: number, text: string) {
return {
@@ -437,6 +439,28 @@ suite('gr-reply-dialog tests', () => {
);
});
+ test('save review fires sendReply metric', async () => {
+ const timeEndStub = stubReporting('timeEnd');
+
+ // Async tick is needed because iron-selector content is distributed and
+ // distributed content requires an observer to be set up.
+ await element.updateComplete;
+ element.patchsetLevelDraftMessage = 'I wholeheartedly disapprove';
+ element.draftCommentThreads = [createCommentThread([createComment()])];
+
+ element.includeComments = true;
+
+ // This is needed on non-Blink engines most likely due to the ways in
+ // which the dom-repeat elements are stamped.
+ await element.updateComplete;
+ queryAndAssert<GrButton>(element, '.send').click();
+
+ await interceptSaveReview();
+ await element.updateComplete;
+
+ await waitUntil(() => timeEndStub.calledWith(Timing.SEND_REPLY));
+ });
+
test('default to publishing draft comments with reply', async () => {
// Async tick is needed because iron-selector content is distributed and
// distributed content requires an observer to be set up.