
Even before the refactorings, the comment and thread elements were also used from views outside of diff/. Now they are now completely independent from gr-diff and descendants, and can move into their own folder and drop the -diff from their name. The dependency left from diff/gr-diff-host onto comment[-thread], makes sense since gr-diff-host is the Gerrit wrapper for gr-diff with gr-comment[-thread]. Change-Id: I5076428da980198989edc605e5edc0e4d66529dd
267 lines
8.5 KiB
HTML
267 lines
8.5 KiB
HTML
<!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-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-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-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-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-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>
|