3 var assert = require('assert');
5 require('./resources/v3-models.js');
6 require('./resources/mock-remote-api.js');
8 function sampleAnalysisTask()
15 'buildRequestCount': '14',
16 'finishedBuildRequestCount': '6',
17 'category': 'identified',
21 'createdAt': 1454594330000,
23 'endRunTime': 1454515020303,
27 'name': 'Potential 1.2% regression between 2016-02-02 20:20 and 02-03 15:57',
30 'result': 'regression',
31 'segmentationStrategy': '1',
32 'startRun': '37117949',
33 'startRunTime': 1454444458791,
34 'testRangeStragegy': '2'
40 'authorEmail': 'commit-queue@webkit.org',
41 'authorName': 'Commit Queue',
43 'message': 'Commit message',
55 function measurementCluster()
58 'clusterSize': 5184000000,
59 'clusterStart': 946684800000,
97 'endTime': 1454716800000,
112 'lastModified': 1455236216153,
113 'startTime': 1449532800000,
118 describe('AnalysisTask', function () {
119 describe('fetchAll', function () {
120 it('should request all analysis tasks', function () {
122 AnalysisTask.fetchAll().then(function () { callCount++; });
123 assert.equal(callCount, 0);
124 assert.equal(requests.length, 1);
125 assert.equal(requests[0].url, '../api/analysis-tasks');
128 it('should not request all analysis tasks multiple times', function () {
130 AnalysisTask.fetchAll().then(function () { callCount++; });
131 assert.equal(callCount, 0);
132 assert.equal(requests.length, 1);
133 assert.equal(requests[0].url, '../api/analysis-tasks');
135 AnalysisTask.fetchAll().then(function () { callCount++; });
136 assert.equal(callCount, 0);
137 assert.equal(requests.length, 1);
140 it('should resolve the promise when the request is fullfilled', function (done) {
142 var promise = AnalysisTask.fetchAll().then(function () { callCount++; });
143 assert.equal(callCount, 0);
144 assert.equal(requests.length, 1);
145 assert.equal(requests[0].url, '../api/analysis-tasks');
147 requests[0].resolve(sampleAnalysisTask());
149 var anotherCallCount = 0;
150 return promise.then(function () {
151 assert.equal(callCount, 1);
152 AnalysisTask.fetchAll().then(function () { anotherCallCount++; });
153 }).then(function () {
154 assert.equal(callCount, 1);
155 assert.equal(anotherCallCount, 1);
156 assert.equal(requests.length, 1);
158 }).catch(function (error) { done(error); });
161 it('should create AnalysisTask objects', function (done) {
162 var promise = AnalysisTask.fetchAll();
163 requests[0].resolve(sampleAnalysisTask());
165 return promise.then(function () {
166 assert.equal(AnalysisTask.all().length, 1);
167 var task = AnalysisTask.all()[0];
168 assert.equal(task.id(), 1082);
169 assert.equal(task.metric(), someMetric);
170 assert.equal(task.platform(), somePlatform);
171 assert.ok(task.hasResults());
172 assert.ok(task.hasPendingRequests());
173 assert.equal(task.requestLabel(), '6 of 14');
174 assert.equal(task.category(), 'identified');
175 assert.equal(task.changeType(), 'regression');
176 assert.equal(task.startMeasurementId(), 37117949);
177 assert.equal(task.startTime(), 1454444458791);
178 assert.equal(task.endMeasurementId(), 37253448);
179 assert.equal(task.endTime(), 1454515020303);
181 }).catch(function (error) { done(error); });
184 it('should create CommitLog objects for `causes`', function (done) {
185 var promise = AnalysisTask.fetchAll();
186 requests[0].resolve(sampleAnalysisTask());
188 return promise.then(function () {
189 assert.equal(AnalysisTask.all().length, 1);
190 var task = AnalysisTask.all()[0];
192 assert.equal(task.causes().length, 1);
193 var commit = task.causes()[0];
195 assert.equal(commit.revision(), '196051');
196 assert.equal(commit.repository(), webkit);
197 assert.equal(+commit.time(), 1454481246108);
199 }).catch(function (error) { done(error); });
202 it('should find CommitLog objects for `causes` when MeasurementAdaptor created matching objects', function (done) {
203 var adoptor = new MeasurementAdaptor(measurementCluster().formatMap);
204 var adoptedMeasurement = adoptor.applyTo(measurementCluster().configurations.current[0]);
205 assert.equal(adoptedMeasurement.id, 37188161);
206 assert.equal(adoptedMeasurement.rootSet().commitForRepository(webkit).revision(), '196051');
208 var promise = AnalysisTask.fetchAll();
209 requests[0].resolve(sampleAnalysisTask());
211 return promise.then(function () {
212 assert.equal(AnalysisTask.all().length, 1);
213 var task = AnalysisTask.all()[0];
215 assert.equal(task.causes().length, 1);
216 var commit = task.causes()[0];
217 assert.equal(commit.revision(), '196051');
218 assert.equal(commit.repository(), webkit);
219 assert.equal(+commit.time(), 1454481246108);
221 }).catch(function (error) { done(error); });