summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.html')
-rw-r--r--polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.html266
1 files changed, 266 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.html b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.html
new file mode 100644
index 0000000000..804446aadb
--- /dev/null
+++ b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.html
@@ -0,0 +1,266 @@
+<!DOCTYPE html>
+<!--
+@license
+Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
+<title>gr-thread-list</title>
+
+<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
+<script src="../../../bower_components/web-component-tester/browser.js"></script>
+<link rel="import" href="../../../test/common-test-setup.html"/>
+<link rel="import" href="gr-thread-list.html">
+
+<script>void(0);</script>
+
+<test-fixture id="basic">
+ <template>
+ <gr-thread-list></gr-thread-list>
+ </template>
+</test-fixture>
+
+<script>
+ suite('gr-thread-list tests', () => {
+ let element;
+ let sandbox;
+ let threadElements;
+
+ setup(() => {
+ sandbox = sinon.sandbox.create();
+ element = fixture('basic');
+ element.threads = [
+ {
+ comments: [
+ {
+ __path: '/COMMIT_MSG',
+ author: {
+ _account_id: 1000000,
+ name: 'user',
+ username: 'user',
+ },
+ patch_set: 4,
+ id: 'ecf0b9fa_fe1a5f62',
+ line: 5,
+ updated: '2018-02-08 18:49:18.000000000',
+ message: 'test',
+ unresolved: true,
+ },
+ {
+ id: '503008e2_0ab203ee',
+ path: '/COMMIT_MSG',
+ line: 5,
+ in_reply_to: 'ecf0b9fa_fe1a5f62',
+ updated: '2018-02-13 22:48:48.018000000',
+ message: 'draft',
+ unresolved: false,
+ __draft: true,
+ __draftID: '0.m683trwff68',
+ __editing: false,
+ patch_set: '2',
+ },
+ ],
+ patchNum: 4,
+ path: '/COMMIT_MSG',
+ line: 5,
+ rootId: 'ecf0b9fa_fe1a5f62',
+ start_datetime: '2018-02-08 18:49:18.000000000',
+ },
+ {
+ comments: [
+ {
+ __path: 'test.txt',
+ author: {
+ _account_id: 1000000,
+ name: 'user',
+ username: 'user',
+ },
+ patch_set: 3,
+ id: '09a9fb0a_1484e6cf',
+ side: 'PARENT',
+ updated: '2018-02-13 22:47:19.000000000',
+ message: 'Some comment on another patchset.',
+ unresolved: false,
+ },
+ ],
+ patchNum: 3,
+ path: 'test.txt',
+ rootId: '09a9fb0a_1484e6cf',
+ start_datetime: '2018-02-13 22:47:19.000000000',
+ commentSide: 'PARENT',
+ },
+ {
+ comments: [
+ {
+ __path: '/COMMIT_MSG',
+ author: {
+ _account_id: 1000000,
+ name: 'user',
+ username: 'user',
+ },
+ patch_set: 2,
+ id: '8caddf38_44770ec1',
+ line: 4,
+ updated: '2018-02-13 22:48:40.000000000',
+ message: 'Another unresolved comment',
+ unresolved: true,
+ },
+ ],
+ patchNum: 2,
+ path: '/COMMIT_MSG',
+ line: 4,
+ rootId: '8caddf38_44770ec1',
+ start_datetime: '2018-02-13 22:48:40.000000000',
+ },
+ {
+ comments: [
+ {
+ __path: '/COMMIT_MSG',
+ author: {
+ _account_id: 1000000,
+ name: 'user',
+ username: 'user',
+ },
+ patch_set: 2,
+ id: 'scaddf38_44770ec1',
+ line: 4,
+ updated: '2018-02-14 22:48:40.000000000',
+ message: 'Yet another unresolved comment',
+ unresolved: true,
+ },
+ ],
+ patchNum: 2,
+ path: '/COMMIT_MSG',
+ line: 4,
+ rootId: 'scaddf38_44770ec1',
+ start_datetime: '2018-02-14 22:48:40.000000000',
+ },
+ {
+ comments: [
+ {
+ id: 'zcf0b9fa_fe1a5f62',
+ path: '/COMMIT_MSG',
+ line: 6,
+ updated: '2018-02-15 22:48:48.018000000',
+ message: 'resolved draft',
+ unresolved: false,
+ __draft: true,
+ __draftID: '0.m683trwff68',
+ __editing: false,
+ patch_set: '2',
+ },
+ ],
+ patchNum: 4,
+ path: '/COMMIT_MSG',
+ line: 6,
+ rootId: 'zcf0b9fa_fe1a5f62',
+ start_datetime: '2018-02-09 18:49:18.000000000',
+ },
+ ];
+ flushAsynchronousOperations();
+ threadElements = Polymer.dom(element.root)
+ .querySelectorAll('gr-diff-comment-thread');
+ });
+
+ teardown(() => {
+ sandbox.restore();
+ });
+
+ test('draft toggle only appears when logged in', () => {
+ assert.equal(getComputedStyle(element.$$('.draftToggle')).display,
+ 'none');
+ element.loggedIn = true;
+ assert.notEqual(getComputedStyle(element.$$('.draftToggle')).display,
+ 'none');
+ });
+
+ test('there are five threads by default', () => {
+ assert.equal(Polymer.dom(element.root)
+ .querySelectorAll('gr-diff-comment-thread').length, 5);
+ });
+
+ test('_computeSortedThreads', () => {
+ assert.equal(element._sortedThreads.length, 5);
+ // Draft and unresolved
+ assert.equal(element._sortedThreads[0].thread.rootId,
+ 'ecf0b9fa_fe1a5f62');
+ // unresolved
+ assert.equal(element._sortedThreads[1].thread.rootId,
+ 'scaddf38_44770ec1');
+ // unresolved
+ assert.equal(element._sortedThreads[2].thread.rootId,
+ '8caddf38_44770ec1');
+ // resolved and draft
+ assert.equal(element._sortedThreads[3].thread.rootId,
+ 'zcf0b9fa_fe1a5f62');
+ // resolved
+ assert.equal(element._sortedThreads[4].thread.rootId,
+ '09a9fb0a_1484e6cf');
+ });
+
+ test('thread removal', () => {
+ threadElements[1].fire('thread-discard', {rootId: 'scaddf38_44770ec1'});
+ flushAsynchronousOperations();
+ assert.equal(element._sortedThreads.length, 4);
+ assert.equal(element._sortedThreads[0].thread.rootId,
+ 'ecf0b9fa_fe1a5f62');
+ // unresolved
+ assert.equal(element._sortedThreads[1].thread.rootId,
+ '8caddf38_44770ec1');
+ // resolved and draft
+ assert.equal(element._sortedThreads[2].thread.rootId,
+ 'zcf0b9fa_fe1a5f62');
+ // resolved
+ assert.equal(element._sortedThreads[3].thread.rootId,
+ '09a9fb0a_1484e6cf');
+ });
+
+ test('toggle unresolved only shows unressolved comments', () => {
+ MockInteractions.tap(element.$.unresolvedToggle);
+ flushAsynchronousOperations();
+ assert.equal(Polymer.dom(element.root)
+ .querySelectorAll('gr-diff-comment-thread').length, 3);
+ });
+
+ test('toggle drafts only shows threads with draft comments', () => {
+ MockInteractions.tap(element.$.draftToggle);
+ flushAsynchronousOperations();
+ assert.equal(Polymer.dom(element.root)
+ .querySelectorAll('gr-diff-comment-thread').length, 2);
+ });
+
+ test('toggle drafts and unresolved only shows threads with drafts and ' +
+ 'publicly unresolved ', () => {
+ MockInteractions.tap(element.$.draftToggle);
+ MockInteractions.tap(element.$.unresolvedToggle);
+ flushAsynchronousOperations();
+ assert.equal(Polymer.dom(element.root)
+ .querySelectorAll('gr-diff-comment-thread').length, 2);
+ });
+
+ test('modification events are consumed and displatched', () => {
+ sandbox.spy(element, '_handleCommentsChanged');
+ const dispatchSpy = sandbox.stub();
+ element.addEventListener('thread-list-modified', dispatchSpy);
+ threadElements[0].fire('thread-changed', {
+ rootId: 'ecf0b9fa_fe1a5f62', path: '/COMMIT_MSG'});
+ assert.isTrue(element._handleCommentsChanged.called);
+ assert.isTrue(dispatchSpy.called);
+ assert.equal(dispatchSpy.lastCall.args[0].detail.rootId,
+ 'ecf0b9fa_fe1a5f62');
+ assert.equal(dispatchSpy.lastCall.args[0].detail.path, '/COMMIT_MSG');
+ });
+ });
+</script>