blob: 421c6ab589c1ebf2a50b869defdf7f609b9f391d [file] [log] [blame]
Becky Siegel53a184a2017-10-24 17:23:42 -07001<!DOCTYPE html>
2<!--
Dave Borowitz8cdc76b2018-03-26 10:04:27 -04003@license
Becky Siegel53a184a2017-10-24 17:23:42 -07004Copyright (C) 2017 The Android Open Source Project
5
6Licensed under the Apache License, Version 2.0 (the "License");
7you may not use this file except in compliance with the License.
8You may obtain a copy of the License at
9
10http://www.apache.org/licenses/LICENSE-2.0
11
12Unless required by applicable law or agreed to in writing, software
13distributed under the License is distributed on an "AS IS" BASIS,
14WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15See the License for the specific language governing permissions and
16limitations under the License.
17-->
18
19<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
20<title>gr-change-status</title>
Ole Rehmsen62909352019-05-16 16:10:33 +020021<script src="/test/common-test-setup.js"></script>
22<script src="/bower_components/webcomponentsjs/custom-elements-es5-adapter.js"></script>
Becky Siegel53a184a2017-10-24 17:23:42 -070023
Ole Rehmsenecf0b782019-05-16 11:29:39 +020024<script src="/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
Ole Rehmsen31640742019-05-16 11:24:47 +020025<script src="/bower_components/web-component-tester/browser.js"></script>
Becky Siegel53a184a2017-10-24 17:23:42 -070026<link rel="import" href="../../../test/common-test-setup.html"/>
27<link rel="import" href="gr-change-status.html">
28
29<script>void(0);</script>
30
31<test-fixture id="basic">
32 <template>
33 <gr-change-status></gr-change-status>
34 </template>
35</test-fixture>
36
37<script>
Dhruv Srivastavafe186da2019-11-12 08:41:10 -080038 const WIP_TOOLTIP = 'This change isn\'t ready to be reviewed or submitted. ' +
39 'It will not appear on dashboards unless you are CC\'ed or assigned, ' +
40 'and email notifications will be silenced until the review is started.';
41
42 const MERGE_CONFLICT_TOOLTIP = 'This change has merge conflicts. ' +
43 'Download the patch and run "git rebase master". ' +
44 'Upload a new patchset after resolving all merge conflicts.';
45
46 const PRIVATE_TOOLTIP = 'This change is only visible to its owner and ' +
47 'current reviewers (or anyone with "View Private Changes" permission).';
48
Becky Siegel53a184a2017-10-24 17:23:42 -070049 suite('gr-change-status tests', () => {
50 let element;
51 let sandbox;
52
53 setup(() => {
54 element = fixture('basic');
55 sandbox = sinon.sandbox.create();
56 });
57
58 teardown(() => {
59 sandbox.restore();
60 });
61
62 test('WIP', () => {
63 element.status = 'WIP';
64 assert.equal(element.$$('.chip').innerText, 'Work in Progress');
Dhruv Srivastavafe186da2019-11-12 08:41:10 -080065 assert.equal(element.tooltipText, WIP_TOOLTIP);
Becky Siegel53a184a2017-10-24 17:23:42 -070066 assert.isTrue(element.classList.contains('wip'));
67 });
68
Kasper Nilssone15afc92018-02-27 14:22:21 -080069 test('WIP flat', () => {
70 element.flat = true;
71 element.status = 'WIP';
72 assert.equal(element.$$('.chip').innerText, 'WIP');
73 assert.isDefined(element.tooltipText);
74 assert.isTrue(element.classList.contains('wip'));
75 assert.isTrue(element.hasAttribute('flat'));
76 });
77
Becky Siegel53a184a2017-10-24 17:23:42 -070078 test('merged', () => {
79 element.status = 'Merged';
80 assert.equal(element.$$('.chip').innerText, element.status);
Becky Siegel97de7382018-01-26 14:56:43 -080081 assert.equal(element.tooltipText, '');
Becky Siegel53a184a2017-10-24 17:23:42 -070082 assert.isTrue(element.classList.contains('merged'));
83 });
84
85 test('abandoned', () => {
86 element.status = 'Abandoned';
87 assert.equal(element.$$('.chip').innerText, element.status);
Becky Siegel97de7382018-01-26 14:56:43 -080088 assert.equal(element.tooltipText, '');
Becky Siegel53a184a2017-10-24 17:23:42 -070089 assert.isTrue(element.classList.contains('abandoned'));
90 });
91
92 test('merge conflict', () => {
93 element.status = 'Merge Conflict';
94 assert.equal(element.$$('.chip').innerText, element.status);
Dhruv Srivastavafe186da2019-11-12 08:41:10 -080095 assert.equal(element.tooltipText, MERGE_CONFLICT_TOOLTIP);
Becky Siegel53a184a2017-10-24 17:23:42 -070096 assert.isTrue(element.classList.contains('merge-conflict'));
97 });
98
99 test('private', () => {
100 element.status = 'Private';
101 assert.equal(element.$$('.chip').innerText, element.status);
Dhruv Srivastavafe186da2019-11-12 08:41:10 -0800102 assert.equal(element.tooltipText, PRIVATE_TOOLTIP);
Becky Siegel53a184a2017-10-24 17:23:42 -0700103 assert.isTrue(element.classList.contains('private'));
104 });
Wyatt Allenf3c7bf12017-10-27 13:15:11 -0700105
Becky Siegel020e1be2017-12-22 12:57:11 -0800106 test('active', () => {
107 element.status = 'Active';
108 assert.equal(element.$$('.chip').innerText, element.status);
Becky Siegel97de7382018-01-26 14:56:43 -0800109 assert.equal(element.tooltipText, '');
Becky Siegel020e1be2017-12-22 12:57:11 -0800110 assert.isTrue(element.classList.contains('active'));
111 });
112
113 test('ready to submit', () => {
114 element.status = 'Ready to submit';
115 assert.equal(element.$$('.chip').innerText, element.status);
Becky Siegel97de7382018-01-26 14:56:43 -0800116 assert.equal(element.tooltipText, '');
Becky Siegel020e1be2017-12-22 12:57:11 -0800117 assert.isTrue(element.classList.contains('ready-to-submit'));
118 });
119
Wyatt Allenf3c7bf12017-10-27 13:15:11 -0700120 test('updating status removes the previous class', () => {
121 element.status = 'Private';
122 assert.isTrue(element.classList.contains('private'));
123 assert.isFalse(element.classList.contains('wip'));
124
125 element.status = 'WIP';
126 assert.isFalse(element.classList.contains('private'));
127 assert.isTrue(element.classList.contains('wip'));
128 });
Becky Siegel53a184a2017-10-24 17:23:42 -0700129 });
130</script>