blob: 7c8a76f992041dfe6d6422e58265148874c4b094 [file] [log] [blame]
Andrew Bonventre82361ef2015-12-21 18:22:49 -05001<!DOCTYPE html>
2<!--
3Copyright (C) 2015 The Android Open Source Project
4
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16-->
17
18<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
19<title>gr-reviewer-list</title>
20
Viktar Donich29e1ce52017-03-28 17:02:44 -070021<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
Andrew Bonventre78792e82016-03-04 17:48:22 -050022<script src="../../../bower_components/web-component-tester/browser.js"></script>
Andrew Bonventre82361ef2015-12-21 18:22:49 -050023
Andrew Bonventre78792e82016-03-04 17:48:22 -050024<link rel="import" href="../../../bower_components/iron-test-helpers/iron-test-helpers.html">
25<link rel="import" href="gr-reviewer-list.html">
Andrew Bonventre82361ef2015-12-21 18:22:49 -050026
Viktar Donich29e1ce52017-03-28 17:02:44 -070027<script>void(0);</script>
28
Andrew Bonventre82361ef2015-12-21 18:22:49 -050029<test-fixture id="basic">
30 <template>
31 <gr-reviewer-list></gr-reviewer-list>
32 </template>
33</test-fixture>
34
35<script>
36 suite('gr-reviewer-list tests', function() {
37 var element;
Logan Hanksa75fb052016-08-01 13:23:38 -070038 var sandbox;
Andrew Bonventre82361ef2015-12-21 18:22:49 -050039
40 setup(function() {
41 element = fixture('basic');
Logan Hanksa75fb052016-08-01 13:23:38 -070042 sandbox = sinon.sandbox.create();
Andrew Bonventre43106872016-05-02 18:42:04 -040043 stub('gr-rest-api-interface', {
Andrew Bonventrefd434af2016-10-15 20:22:00 -070044 getConfig: function() { return Promise.resolve({}); },
Andrew Bonventre43106872016-05-02 18:42:04 -040045 removeChangeReviewer: function() {
46 return Promise.resolve({ok: true});
47 },
48 });
Andrew Bonventre82361ef2015-12-21 18:22:49 -050049 });
50
Logan Hanksa75fb052016-08-01 13:23:38 -070051 teardown(function() {
52 sandbox.restore();
53 });
54
Andrew Bonventre82361ef2015-12-21 18:22:49 -050055 test('controls hidden on immutable element', function() {
56 element.mutable = false;
57 assert.isTrue(element.$$('.controlsContainer').hasAttribute('hidden'));
58 element.mutable = true;
59 assert.isFalse(element.$$('.controlsContainer').hasAttribute('hidden'));
60 });
61
Logan Hanksadd2bce2016-07-20 13:22:51 -070062 test('add reviewer button opens reply dialog', function(done) {
63 element.addEventListener('show-reply-dialog', function() {
64 done();
65 });
Andrew Bonventre82361ef2015-12-21 18:22:49 -050066 MockInteractions.tap(element.$$('.addReviewer'));
Andrew Bonventre82361ef2015-12-21 18:22:49 -050067 });
68
69 test('only show remove for removable reviewers', function() {
70 element.mutable = true;
71 element.change = {
72 owner: {
73 _account_id: 1,
74 },
75 reviewers: {
76 'REVIEWER': [
77 {
78 _account_id: 2,
79 name: 'Bojack Horseman',
80 email: 'SecretariatRulez96@hotmail.com',
81 },
82 {
83 _account_id: 3,
84 name: 'Pinky Penguin',
85 },
86 ],
87 'CC': [
88 {
89 _account_id: 4,
90 name: 'Diane Nguyen',
91 email: 'macarthurfellow2B@juno.com',
92 },
Kasper Nilsson8cbccea2017-03-23 10:53:21 -070093 {
94 email: 'test@e.mail',
95 },
96 ],
Andrew Bonventre82361ef2015-12-21 18:22:49 -050097 },
98 removable_reviewers: [
99 {
100 _account_id: 3,
101 name: 'Pinky Penguin',
102 },
103 {
104 _account_id: 4,
105 name: 'Diane Nguyen',
106 email: 'macarthurfellow2B@juno.com',
107 },
Kasper Nilsson8cbccea2017-03-23 10:53:21 -0700108 {
109 email: 'test@e.mail',
110 },
111 ],
Andrew Bonventre82361ef2015-12-21 18:22:49 -0500112 };
113 flushAsynchronousOperations();
Han-Wen Nienhuysb72d5442016-03-16 16:34:44 +0100114 var chips =
Andrew Bonventre43106872016-05-02 18:42:04 -0400115 Polymer.dom(element.root).querySelectorAll('gr-account-chip');
Kasper Nilsson8cbccea2017-03-23 10:53:21 -0700116 assert.equal(chips.length, 4);
Han-Wen Nienhuysb72d5442016-03-16 16:34:44 +0100117 Array.from(chips).forEach(function(el) {
Kasper Nilsson8cbccea2017-03-23 10:53:21 -0700118 var accountID = el.account._account_id || el.account.email;
Andrew Bonventre82361ef2015-12-21 18:22:49 -0500119 assert.ok(accountID);
Han-Wen Nienhuysb72d5442016-03-16 16:34:44 +0100120
121 var buttonEl = el.$$('gr-button');
122 assert.isNotNull(buttonEl);
Andrew Bonventre82361ef2015-12-21 18:22:49 -0500123 if (accountID == 2) {
Han-Wen Nienhuysb72d5442016-03-16 16:34:44 +0100124 assert.isTrue(buttonEl.hasAttribute('hidden'));
Andrew Bonventre82361ef2015-12-21 18:22:49 -0500125 } else {
Han-Wen Nienhuysb72d5442016-03-16 16:34:44 +0100126 assert.isFalse(buttonEl.hasAttribute('hidden'));
Andrew Bonventre82361ef2015-12-21 18:22:49 -0500127 }
128 });
129 });
Logan Hanksa75fb052016-08-01 13:23:38 -0700130
131 test('tracking reviewers and ccs', function() {
132 var counter = 0;
133 function makeAccount() {
134 return {_account_id: counter++};
135 }
136
137 var owner = makeAccount();
138 var reviewer = makeAccount();
139 var cc = makeAccount();
140 var reviewers = {
141 REMOVED: [makeAccount()],
142 REVIEWER: [owner, reviewer],
143 CC: [owner, cc],
144 };
145
146 element.ccsOnly = false;
147 element.reviewersOnly = false;
148 element.change = {
149 owner: owner,
150 reviewers: reviewers,
151 };
152 assert.deepEqual(element._reviewers, [reviewer, cc]);
153
154 element.reviewersOnly = true;
155 element.change = {
156 owner: owner,
157 reviewers: reviewers,
158 };
159 assert.deepEqual(element._reviewers, [reviewer]);
160
161 element.ccsOnly = true;
162 element.reviewersOnly = false;
163 element.change = {
164 owner: owner,
165 reviewers: reviewers,
166 };
167 assert.deepEqual(element._reviewers, [cc]);
168 });
169
170 test('_handleAddTap passes mode with event', function() {
171 var fireStub = sandbox.stub(element, 'fire');
172 var e = {preventDefault: function() {}};
173
174 element.ccsOnly = false;
175 element.reviewersOnly = false;
176 element._handleAddTap(e);
177 assert.isTrue(fireStub.calledWith('show-reply-dialog', {value: {}}));
178
179 element.reviewersOnly = true;
180 element._handleAddTap(e);
181 assert.isTrue(fireStub.lastCall.calledWith('show-reply-dialog',
182 {value: {reviewersOnly: true}}));
183
184 element.ccsOnly = true;
185 element.reviewersOnly = false;
186 element._handleAddTap(e);
187 assert.isTrue(fireStub.lastCall.calledWith('show-reply-dialog',
188 {value: {ccsOnly: true}}));
189 });
Andrew Bonventre82361ef2015-12-21 18:22:49 -0500190 });
191</script>