2 * Copyright (C) 2011 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
28 module('ui.notifications');
30 test('Notification', 5, function() {
31 var notification = new ui.notifications.Notification();
32 equal(notification.tagName, 'LI');
33 equal(notification.innerHTML, '<div class="how"></div><div class="what"></div>');
34 equal(notification.index(), 0);
35 notification.setIndex(1);
36 equal(notification.index(), 1);
37 // FIXME: Really need to figure out how to mock/test animated removal.
38 ok(notification.dismiss);
41 test('Stream', 11, function() {
42 var stream = new ui.notifications.Stream();
43 equal(stream.tagName, 'OL');
44 equal(stream.className, 'notifications');
45 equal(stream.childElementCount, 0);
49 notification = new ui.notifications.Info('-o-matic');
50 notification.setIndex(2);
51 stream.add(notification);
52 equal(stream.childElementCount, 1);
53 equal(stream.textContent, '-o-matic');
55 notification = new ui.notifications.Info('garden');
56 notification.setIndex(3);
57 stream.add(notification);
58 equal(stream.childElementCount, 2);
59 equal(stream.textContent, 'garden-o-matic');
61 notification = new ui.notifications.Info(' is ');
62 notification.setIndex(1);
63 stream.add(notification);
64 equal(stream.childElementCount, 3);
65 equal(stream.textContent, 'garden-o-matic is ');
67 notification = new ui.notifications.Info('awesome!');
68 stream.add(notification);
69 equal(stream.childElementCount, 4);
70 equal(stream.textContent, 'garden-o-matic is awesome!');
73 test('Info', 2, function() {
74 var info = new ui.notifications.Info('info');
75 equal(info.tagName, 'LI');
76 equal(info.innerHTML, '<div class="how"></div><div class="what">info</div>');
79 test('FailingTestGroup', 2, function() {
80 var failingTest = new ui.notifications.FailingTestGroup('test');
81 equal(failingTest.tagName, 'LI');
82 equal(failingTest.innerHTML, 'test');
85 test('SuspiciousCommit', 2, function() {
86 var suspiciousCommit = new ui.notifications.SuspiciousCommit({revision: 1, summary: "summary", author: "author", reviewer: "reviewer"});
87 equal(suspiciousCommit.tagName, 'LI');
88 equal(suspiciousCommit.innerHTML,
89 '<div class="description">' +
90 '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
91 '<span class="summary">summary</span>' +
92 '<span class="author">author</span>' +
93 '<span class="reviewer">reviewer</span>' +
95 '<ul class="actions">' +
96 '<li><button class="action" title="Blames this failure on this revision.">Blame</button></li>' +
97 '<li><button class="action" title="Rolls out this revision.">Roll out</button></li>' +
101 test('FailingTestsSummary', 12, function() {
102 var testFailures = new ui.notifications.FailingTestsSummary();
103 equal(testFailures.tagName, 'LI');
104 equal(testFailures.innerHTML,
105 '<div class="how">' +
106 '<time class="relative">Just now</time>' +
107 '<table class="failures">' +
108 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
109 '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
112 '<div class="what">' +
113 '<div class="problem">' +
114 '<ul class="effects"></ul>' +
115 '<ul class="actions">' +
116 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
117 '<li><button class="action">Rebaseline</button></li>' +
118 '<li><button class="action">Mark as Expected</button></li>' +
121 '<ul class="causes"></ul>' +
123 testFailures.addFailureAnalysis({testName: 'test', resultNodesByBuilder: {}});
124 equal(testFailures.index(), 0);
125 equal(testFailures.innerHTML,
126 '<div class="how">' +
127 '<time class="relative">Just now</time>' +
128 '<table class="failures">' +
129 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
130 '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
133 '<div class="what">' +
134 '<div class="problem">' +
135 '<ul class="effects">' +
138 '<ul class="actions">' +
139 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
140 '<li><button class="action">Rebaseline</button></li>' +
141 '<li><button class="action">Mark as Expected</button></li>' +
144 '<ul class="causes"></ul>' +
146 ok(testFailures.containsFailureAnalysis({testName: 'test'}));
147 ok(!testFailures.containsFailureAnalysis({testName: 'foo'}));
148 testFailures.addFailureAnalysis({testName: 'test'});
149 equal(testFailures.innerHTML,
150 '<div class="how">' +
151 '<time class="relative">Just now</time>' +
152 '<table class="failures">' +
153 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
154 '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
157 '<div class="what">' +
158 '<div class="problem">' +
159 '<ul class="effects">' +
162 '<ul class="actions">' +
163 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
164 '<li><button class="action">Rebaseline</button></li>' +
165 '<li><button class="action">Mark as Expected</button></li>' +
168 '<ul class="causes"></ul>' +
170 deepEqual(testFailures.testNameList(), ['test']);
171 var time = new Date();
172 time.setMinutes(time.getMinutes() - 10);
173 testFailures.addCommitData({revision: 1, time: time, summary: "summary", author: "author", reviewer: "reviewer"});
174 equal(testFailures.index(), time.getTime());
175 equal(testFailures.innerHTML,
176 '<div class="how">' +
177 '<time class="relative">10 minutes ago</time>' +
178 '<table class="failures">' +
179 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
180 '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
183 '<div class="what">' +
184 '<div class="problem">' +
185 '<ul class="effects">' +
188 '<ul class="actions">' +
189 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
190 '<li><button class="action">Rebaseline</button></li>' +
191 '<li><button class="action">Mark as Expected</button></li>' +
194 '<ul class="causes">' +
196 '<div class="description">' +
197 '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
198 '<span class="summary">summary</span>' +
199 '<span class="author">author</span>' +
200 '<span class="reviewer">reviewer</span>' +
202 '<ul class="actions">' +
203 '<li><button class="action" title="Blames this failure on this revision.">Blame</button></li>' +
204 '<li><button class="action" title="Rolls out this revision.">Roll out</button></li>' +
210 testFailures.addFailureAnalysis({testName: 'foo', resultNodesByBuilder: {'Webkit Linux (dbg)(1)': { actual: 'TEXT'}}});
211 equal(testFailures.innerHTML,
212 '<div class="how">' +
213 '<time class="relative">10 minutes ago</time>' +
214 '<table class="failures">' +
215 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
217 '<tr class="TEXT">' +
220 '<td><a target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)(1)"><span class="architecture">64-bit</span><span class="version">lucid</span></a></td>' +
222 '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
226 '<div class="what">' +
227 '<div class="problem">' +
228 '<ul class="effects">' +
232 '<ul class="actions">' +
233 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
234 '<li><button class="action">Rebaseline</button></li>' +
235 '<li><button class="action">Mark as Expected</button></li>' +
238 '<ul class="causes">' +
240 '<div class="description">' +
241 '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
242 '<span class="summary">summary</span>' +
243 '<span class="author">author</span>' +
244 '<span class="reviewer">reviewer</span>' +
246 '<ul class="actions">' +
247 '<li><button class="action" title="Blames this failure on this revision.">Blame</button></li>' +
248 '<li><button class="action" title="Rolls out this revision.">Roll out</button></li>' +
254 testFailures.updateBuilderResults({'Webkit Mac10.5 (CG)': { actual: 'BUILDING'}});
255 equal(testFailures.innerHTML,
256 '<div class="how">' +
257 '<time class="relative">10 minutes ago</time>' +
258 '<table class="failures">' +
259 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
261 '<tr class="TEXT">' +
264 '<td><a target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)(1)"><span class="architecture">64-bit</span><span class="version">lucid</span></a></td>' +
266 '<tr class="BUILDING" style="">' +
267 '<td>BUILDING</td>' +
268 '<td><a target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Mac10.5+(CG)"><span class="version">leopard</span></a></td>' +
274 '<div class="what">' +
275 '<div class="problem">' +
276 '<ul class="effects">' +
280 '<ul class="actions">' +
281 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
282 '<li><button class="action">Rebaseline</button></li>' +
283 '<li><button class="action">Mark as Expected</button></li>' +
286 '<ul class="causes">' +
288 '<div class="description">' +
289 '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
290 '<span class="summary">summary</span>' +
291 '<span class="author">author</span>' +
292 '<span class="reviewer">reviewer</span>' +
294 '<ul class="actions">' +
295 '<li><button class="action" title="Blames this failure on this revision.">Blame</button></li>' +
296 '<li><button class="action" title="Rolls out this revision.">Roll out</button></li>' +
303 test('FailingTestsSummary (grouping)', 1, function() {
304 var testFailures = new ui.notifications.FailingTestsSummary();
305 testFailures.addFailureAnalysis({testName: 'path/to/test1.html', resultNodesByBuilder: {}});
306 testFailures.addFailureAnalysis({testName: 'path/to/test2.html', resultNodesByBuilder: {}});
307 testFailures.addFailureAnalysis({testName: 'path/to/test3.html', resultNodesByBuilder: {}});
308 testFailures.addFailureAnalysis({testName: 'path/to/test4.html', resultNodesByBuilder: {}});
309 testFailures.addFailureAnalysis({testName: 'path/another/test.html', resultNodesByBuilder: {}});
310 equal(testFailures.innerHTML,
311 '<div class="how">' +
312 '<time class="relative">Just now</time>' +
313 '<table class="failures">' +
314 '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
315 '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
318 '<div class="what">' +
319 '<div class="problem">' +
320 '<ul class="effects">' +
321 '<li>path/to (4 tests)</li>' +
322 '<li>path/another/test.html</li>' +
324 '<ul class="actions">' +
325 '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
326 '<li><button class="action">Rebaseline</button></li>' +
327 '<li><button class="action">Mark as Expected</button></li>' +
330 '<ul class="causes"></ul>' +
335 test('BuildersFailing', 1, function() {
336 var builderFailing = new ui.notifications.BuildersFailing();
337 builderFailing.setFailingBuilders(['WebKit Linux', 'Webkit Vista']);
338 equal(builderFailing.innerHTML,
339 '<div class="how">' +
340 '<time class="relative">Just now</time>' +
342 '<div class="what">' +
343 '<div class="problem">Build Failed:' +
344 '<ul class="effects">' +
345 '<li class="builder-name"><a target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=WebKit+Linux">WebKit Linux</a></li>' +
346 '<li class="builder-name"><a target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Vista">Vista</a></li>' +
349 '<ul class="causes"></ul>' +