Merge "gr-rest-api-impl: Remove duplicate base url from _fetchB64File"
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
index 3d76c82..9313739 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
@@ -1921,9 +1921,6 @@
}
isFixSuggestionChanged(): boolean {
- // Check to not change fix suggestion when draft is not being edited only
- // when user quickly disable generating suggestions and click save
- if (!this.editing && this.generateSuggestion) return false;
return !deepEqual(this.comment?.fix_suggestions, this.getFixSuggestions());
}
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
index 444a43f..5273439 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
@@ -40,7 +40,7 @@
import {GrConfirmDeleteCommentDialog} from '../gr-confirm-delete-comment-dialog/gr-confirm-delete-comment-dialog';
import {assertIsDefined} from '../../../utils/common-util';
import {Key, Modifier} from '../../../utils/dom-util';
-import {SinonStubbedMember} from 'sinon';
+import {SinonStub, SinonStubbedMember} from 'sinon';
import {fixture, html, assert} from '@open-wc/testing';
import {GrButton} from '../gr-button/gr-button';
import {testResolver} from '../../../test/common-test-setup';
@@ -49,6 +49,7 @@
commentsModelToken,
} from '../../../models/comments/comments-model';
import {KnownExperimentId} from '../../../services/flags/flags';
+import {GrSuggestionDiffPreview} from '../gr-suggestion-diff-preview/gr-suggestion-diff-preview';
suite('gr-comment tests', () => {
let element: GrComment;
@@ -1123,5 +1124,72 @@
/* HTML */ '<gr-suggestion-diff-preview id="suggestionDiffPreview"> </gr-suggestion-diff-preview>'
);
});
+
+ suite('save', () => {
+ const savePromise = mockPromise<DraftInfo>();
+ let saveDraftStub: SinonStub;
+ const textToSave = 'something, not important';
+ setup(async () => {
+ const comment = createDraft();
+ element = await fixture(
+ html`<gr-comment
+ .account=${account}
+ .showPatchset=${true}
+ .comment=${comment}
+ .initiallyCollapsed=${false}
+ ></gr-comment>`
+ );
+ saveDraftStub = sinon
+ .stub(commentsModel, 'saveDraft')
+ .returns(savePromise);
+ sinon.stub(element, 'showGeneratedSuggestion').returns(true);
+ element.editing = true;
+ await element.updateComplete;
+ element.messageText = textToSave;
+ element.unresolved = true;
+ element.generateSuggestion = true;
+ element.generatedFixSuggestion = generatedFixSuggestion;
+ await element.updateComplete;
+ });
+
+ test('save fix suggestion when previewed', async () => {
+ const suggestionDiffPreview = queryAndAssert<GrSuggestionDiffPreview>(
+ element,
+ '#suggestionDiffPreview'
+ );
+ suggestionDiffPreview.previewed = true;
+ await element.updateComplete;
+ element.save();
+ await element.updateComplete;
+ waitUntilCalled(saveDraftStub, 'saveDraft()');
+ assert.equal(
+ saveDraftStub.lastCall.firstArg.fix_suggestions[0]?.fix_id,
+ generatedFixSuggestion.fix_id
+ );
+ assert.isFalse(element.editing);
+
+ savePromise.resolve();
+ });
+
+ test("don't save fix suggestion when not previewed", async () => {
+ const suggestionDiffPreview = queryAndAssert<GrSuggestionDiffPreview>(
+ element,
+ '#suggestionDiffPreview'
+ );
+ suggestionDiffPreview.previewed = false;
+ await element.updateComplete;
+ element.save();
+ await element.updateComplete;
+ waitUntilCalled(saveDraftStub, 'saveDraft()');
+ assert.equal(saveDraftStub.lastCall.firstArg.message, textToSave);
+ assert.equal(
+ saveDraftStub.lastCall.firstArg.fix_suggestions,
+ undefined
+ );
+ assert.isFalse(element.editing);
+
+ savePromise.resolve();
+ });
+ });
});
});