2 Copyright 2014 The Chromium Authors. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file.
7 <link rel="import" href="../ct-failure-stream.html">
12 var assert = chai.assert;
14 describe('ct-failure-stream', function() {
18 beforeEach(function(done) {
19 stream = document.createElement('ct-failure-stream');
23 describe('default ui', function() {
24 it('should show failure groups', function(done) {
25 // FIXME: We should use some more interesting test data, but
26 // ct-failure-stream will give these values to ct-commit-data,
27 // which will hit the network unless we figure out how to mock
28 // out ct-commit-data in a better way.
29 stream.groups = [new CTFailureGroup('', new CTStepFailureGroupData([])),
30 new CTFailureGroup('', new CTStepFailureGroupData([]))];
31 stream.category = 'default';
32 setTimeout(function() {
33 var cards = stream.shadowRoot.querySelectorAll('ct-step-failure-card');
34 assert.equal(cards.length, 2);
40 describe('category', function() {
42 it('should only show failure groups for the specified category', function(done) {
43 var failures = [new CTStepFailure('step', 'reason', [{key: 'a', annotation: {snoozeTime: Date.now() + 1000 * 1000}}])];
44 var snoozed = new CTFailureGroup('', new CTStepFailureGroupData(failures));
45 stream.groups = [new CTFailureGroup('', new CTStepFailureGroupData([])), snoozed];
46 stream.category = 'snoozed';
47 setTimeout(function() {
48 var cards = stream.shadowRoot.querySelectorAll('ct-step-failure-card');
49 assert.equal(cards.length, 1);
50 assert.equal(cards[0].group, snoozed.data);
55 it('should select the correct card type', function(done) {
56 var failures = [new CTStepFailure('step', 'reason', [{key: 'a', annotation: {}}])];
57 var failureGroup = new CTFailureGroup('', new CTStepFailureGroupData(failures));
58 stream.groups = [new CTFailureGroup('', new CTStepFailureGroupData([])), failureGroup];
59 stream.category = 'default';
60 setTimeout(function() {
61 assert(stream.shadowRoot.querySelector('ct-step-failure-card') != null,
62 'missing sheriff card');
63 stream.groups = [new CTFailureGroup('', new CTTrooperFailureGroupData(
64 'details', 'url', {percent_over_median_slo: '6%',
65 percent_over_max_slo: '7%'}, 'cq_latency', ''))];
66 setTimeout(function() {
67 assert(stream.shadowRoot.querySelector('ct-trooper-card') != null,
68 'missing cq-latency card');
69 stream.groups[0].data.type = 'tree_status';
70 setTimeout(function() {
71 assert(stream.shadowRoot.querySelector('ct-trooper-card') !=
72 null, 'missing tree-status card');
73 stream.groups[0].data.type = 'cycle_time';
74 setTimeout(function() {
75 assert(stream.shadowRoot.querySelector('ct-trooper-card') !=
76 null, 'missing cycle-time card');
84 it('adding a bug number should show bugs link', function(done) {
85 var cl = new CTCommitListMock();
86 var group = new CTFailureGroup('blink', new CTStepFailureGroupData([
87 new CTStepFailure('autobot', 'unknown', {someBuilder: {key: 'a', failingBuildCount: 2}},
88 {'blink':158547}, {'blink':158544}),
92 stream.groups = [group];
93 stream.category = 'default';
95 setTimeout(function() {
96 var links = stream.shadowRoot.querySelectorAll('.bugs a');
97 assert.lengthOf(links, 1);
98 assert.match(links[0].href, /crbug.com\/123/);
103 it('should not show bugs link without a bug number', function(done) {
104 var cl = new CTCommitListMock();
105 var group = new CTFailureGroup('blink', new CTStepFailureGroupData([
106 new CTStepFailure('autobot', 'unknown', {someBuilder: {key: 'a'}}, {'blink':158547},
107 {'blink':158544})], cl));
109 stream.groups = [group];
110 stream.category = 'default';
112 setTimeout(function() {
113 var links = stream.shadowRoot.querySelectorAll('.bugs');
114 assert.lengthOf(links, 0);