Project import generated by Copybara.
GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.test.js b/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.test.js
new file mode 100644
index 0000000..e3fe9d2
--- /dev/null
+++ b/static_src/elements/issue-detail/dialogs/mr-edit-description/mr-edit-description.test.js
@@ -0,0 +1,136 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {assert} from 'chai';
+import {MrEditDescription} from './mr-edit-description.js';
+
+let element;
+
+describe('mr-edit-description', () => {
+ beforeEach(() => {
+ element = document.createElement('mr-edit-description');
+
+ document.body.appendChild(element);
+ element.commentsByApproval = new Map([
+ ['', [
+ {
+ descriptionNum: 1,
+ content: 'first description',
+ },
+ {
+ content: 'first comment',
+ },
+ {
+ descriptionNum: 2,
+ content: '<b>last</b> description',
+ },
+ {
+ content: 'second comment',
+ },
+ {
+ content: 'third comment',
+ },
+ ]], ['foo', [
+ {
+ descriptionNum: 1,
+ content: 'first foo survey',
+ approvalRef: {
+ fieldName: 'foo',
+ },
+ },
+ {
+ descriptionNum: 2,
+ content: 'last foo survey',
+ approvalRef: {
+ fieldName: 'foo',
+ },
+ },
+ ]], ['bar', [
+ {
+ descriptionNum: 1,
+ content: 'bar survey',
+ approvalRef: {
+ fieldName: 'bar',
+ },
+ },
+ ]],
+ ]);
+ });
+
+ afterEach(() => {
+ document.body.removeChild(element);
+ });
+
+ it('initializes', () => {
+ assert.instanceOf(element, MrEditDescription);
+ });
+
+ it('selects last issue description', async () => {
+ element.fieldName = '';
+ element.reset();
+
+ await element.updateComplete;
+
+ assert.equal(element._editedDescription, 'last description');
+ assert.equal(element._title, 'Description');
+ });
+
+ it('selects last survey', async () => {
+ element.fieldName = 'foo';
+ element.reset();
+
+ await element.updateComplete;
+
+ assert.equal(element._editedDescription, 'last foo survey');
+ assert.equal(element._title, 'foo Survey');
+ });
+
+ it('toggle sendEmail', async () => {
+ element.reset();
+ await element.updateComplete;
+
+ const sendEmail = element.shadowRoot.querySelector('#sendEmail');
+
+ await sendEmail.updateComplete;
+
+ sendEmail.click();
+ await element.updateComplete;
+ assert.isFalse(element._sendEmail);
+
+ sendEmail.click();
+ await element.updateComplete;
+ assert.isTrue(element._sendEmail);
+
+ sendEmail.click();
+ await element.updateComplete;
+ assert.isFalse(element._sendEmail);
+ });
+
+ it('renders valid markdown description with preview class', async () => {
+ element.projectName = 'monkeyrail';
+ element._prefs = new Map([['render_markdown', true]]);
+ element.reset();
+
+ element._editedDescription = '# h1';
+
+ await element.updateComplete;
+
+ const previewMarkdown = element.shadowRoot.querySelector('.markdown-preview');
+ assert.isNotNull(previewMarkdown);
+
+ const headerText = previewMarkdown.querySelector('h1').textContent;
+ assert.equal(headerText, 'h1');
+ });
+
+ it('does not show preview when markdown is disabled', async () => {
+ element.projectName = 'disabled_project';
+ element._prefs = new Map([['render_markdown', true]]);
+ element.reset();
+
+ await element.updateComplete;
+
+ const previewMarkdown = element.shadowRoot.querySelector('.markdown-preview');
+ assert.isNull(previewMarkdown);
+ });
+});