b681e2064963b7dc50bba3f6eb97fb26591f38f5
[WebKit-https.git] / Tools / BuildSlaveSupport / build.webkit.org-config / public_html / dashboard / Scripts / tests / tests.js
1 /*
2  * Copyright (C) 2016 Apple, Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
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.
12  *
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.
24  */
25
26 module("Trac", {
27     setup: function() {
28         this.trac = new MockTrac();
29     }
30 });
31
32 test("_loaded", function()
33 {
34     var client = new XMLHttpRequest();
35     client.open('GET', 'test-fixture-trac-rss.xml', false);
36     client.onreadystatechange = function () {
37         if (client.readyState === client.DONE)
38             this.trac._loaded(client.responseXML);
39     }.bind(this);
40     client.send();
41     var commits = this.trac.recordedCommits;
42     strictEqual(commits.length, 8, "should have 8 commits");
43     for (var i = 1; i < commits.length; i++) {
44         var firstRevision = commits[i - 1].revisionNumber;
45         var secondRevision = commits[i].revisionNumber;
46         strictEqual(secondRevision - firstRevision, 1, "commits should be in order " + firstRevision + ", " + secondRevision);
47     }
48 });
49
50 module("BuildBotQueueView");
51
52 var settings = new Settings;
53 test("_appendPendingRevisionCount", function()
54 {
55     trac = new MockTrac();
56     var queue = new MockBuildbotQueue();
57     queue.branches = [{
58         name: "trunk",
59         repository: {
60             name: "openSource",
61             trac: trac
62         }
63     }]
64     var view = new MockBuildbotQueueView([queue]);
65     view._appendPendingRevisionCount(queue);
66     var revisionsBehind = view.element.getElementsByClassName("message")[0].innerHTML.match(/.*(\d+) revision(|s) behind/)[1];
67     equal(revisionsBehind, "1", "assert revisions behind");
68 });
69
70 module("BuildBotQueue", {
71     setup: function() {
72         this.queue = new MockBuildbotQueue();
73         this.queue.branches = [{
74             name: "trunk",
75             repository: {
76                 name: "openSource",
77             }
78         }];
79     }
80 });
81
82 test("compareIterations by revisions", function()
83 {
84     var finished = false;
85     var iteration1 = new BuildbotIteration(this.queue, 1, finished);
86     var iteration2 = new BuildbotIteration(this.queue, 2, finished);
87     iteration1.revision = { "openSource": 33018 };
88     iteration2.revision = { "openSource": 33019 };
89     iteration1.loaded = true;
90     iteration2.loaded = true;
91     ok(this.queue.compareIterations(iteration2, iteration1) < 0, "compareIterations: less than");
92     ok(this.queue.compareIterations(iteration1, iteration2) > 0, "compareIterations: greater than");
93     strictEqual(this.queue.compareIterations(iteration2, iteration2), 0, "compareIterations: equal");
94 });
95
96 test("compareIterations by loaded (one revision missing)", function()
97 {
98     var finished = false;
99     var iteration1 = new BuildbotIteration(this.queue, 1, finished);
100     var iteration2 = new BuildbotIteration(this.queue, 2, finished);
101     iteration1.revision = {};
102     iteration2.revision = { "openSource": 33019 };
103     iteration1.loaded = false;
104     iteration2.loaded = true;
105     ok(this.queue.compareIterations(iteration1, iteration2) > 0, "compareIterations: greater than");
106     ok(this.queue.compareIterations(iteration2, iteration1) < 0, "compareIterations: less than");
107 });
108
109 test("compareIterations by loaded (same revision)", function()
110 {
111     var finished = false;
112     var iteration1 = new BuildbotIteration(this.queue, 1, finished);
113     var iteration2 = new BuildbotIteration(this.queue, 2, finished);
114     iteration1.revision = { "openSource": 33019 };
115     iteration2.revision = { "openSource": 33019 };
116     iteration1.loaded = false;
117     iteration2.loaded = true;
118     ok(this.queue.compareIterations(iteration1, iteration2) > 0, "compareIterations: greater than");
119     ok(this.queue.compareIterations(iteration2, iteration1) < 0, "compareIterations: less than");
120 });
121
122 test("compareIterations by id (revisions not specified)", function()
123 {
124     var finished = false;
125     var iteration1 = new BuildbotIteration(this.queue, 1, finished);
126     var iteration2 = new BuildbotIteration(this.queue, 2, finished);
127     iteration1.revision = {};
128     iteration2.revision = {};
129     iteration1.loaded = false;
130     iteration2.loaded = false;
131     ok(this.queue.compareIterations(iteration2, iteration1) < 0, "compareIterations: less than");
132     ok(this.queue.compareIterations(iteration1, iteration2) > 0, "compareIterations: greater than");
133     strictEqual(this.queue.compareIterations(iteration2, iteration2), 0, "compareIterations: equal");
134 });
135
136 test("compareIterations by id (same revision)", function()
137 {
138     var finished = false;
139     var iteration1 = new BuildbotIteration(this.queue, 1, finished);
140     var iteration2 = new BuildbotIteration(this.queue, 2, finished);
141     iteration1.revision = { "openSource": 33019 };
142     iteration2.revision = { "openSource": 33019 };
143     iteration1.loaded = false;
144     iteration2.loaded = false;
145     ok(this.queue.compareIterations(iteration2, iteration1) < 0, "compareIterations: less than");
146     ok(this.queue.compareIterations(iteration1, iteration2) > 0, "compareIterations: greater than");
147     strictEqual(this.queue.compareIterations(iteration2, iteration2), 0, "compareIterations: equal");
148 });
149
150 test("compareIterationsByRevisions", function()
151 {
152     var finished = false;
153     var iteration1 = new BuildbotIteration(this.queue, 1, finished);
154     var iteration2 = new BuildbotIteration(this.queue, 2, finished);
155     iteration1.revision = { "openSource": 33018 };
156     iteration2.revision = { "openSource": 33019 };
157     iteration1.loaded = true;
158     iteration2.loaded = false;
159     ok(this.queue.compareIterationsByRevisions(iteration2, iteration1) < 0, "compareIterationsByRevisions: less than");
160     ok(this.queue.compareIterationsByRevisions(iteration1, iteration2) > 0, "compareIterationsByRevisions: greater than");
161     strictEqual(this.queue.compareIterationsByRevisions(iteration2, iteration2), 0, "compareIterationsByRevisions: equal");
162 });