150 lines
6.4 KiB
JavaScript
150 lines
6.4 KiB
JavaScript
|
|
describe('ChartRevisionRange', () => {
|
|
|
|
function importRevisionList(context)
|
|
{
|
|
return ChartTest.importChartScripts(context).then(() => {
|
|
ChartTest.makeModelObjectsForSampleCluster(context);
|
|
return context.importScripts(['components/chart-revision-range.js'], 'ChartRevisionRange');
|
|
});
|
|
}
|
|
|
|
describe('revisionList on a non-interactive chart', () => {
|
|
it('should report the list of revision for the latest point', () => {
|
|
const context = new BrowsingContext();
|
|
let evaluator;
|
|
return importRevisionList(context).then((ChartRevisionRange) => {
|
|
const chart = ChartTest.createChartWithSampleCluster(context);
|
|
chart.setDomain(ChartTest.sampleCluster.startTime, ChartTest.sampleCluster.endTime);
|
|
chart.fetchMeasurementSets();
|
|
|
|
const requests = context.symbols.MockRemoteAPI.requests;
|
|
expect(requests.length).to.be(1);
|
|
ChartTest.respondWithSampleCluster(requests[0]);
|
|
|
|
evaluator = new ChartRevisionRange(chart);
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
|
|
return waitForComponentsToRender(context);
|
|
}).then(() => {
|
|
const revisionList = evaluator.revisionList();
|
|
expect(revisionList).to.not.be(null);
|
|
expect(revisionList.length).to.be(2);
|
|
|
|
expect(revisionList[0].repository.label()).to.be('SomeApp');
|
|
expect(revisionList[0].label).to.be('r4006');
|
|
|
|
expect(revisionList[1].repository.label()).to.be('macOS');
|
|
expect(revisionList[1].label).to.be('15C50');
|
|
})
|
|
});
|
|
});
|
|
|
|
|
|
describe('revisionList on an interactive chart', () => {
|
|
|
|
it('should not report the list of revision for the latest point when there is no selection or indicator', () => {
|
|
const context = new BrowsingContext();
|
|
let evaluator;
|
|
return importRevisionList(context).then((ChartRevisionRange) => {
|
|
const chart = ChartTest.createInteractiveChartWithSampleCluster(context);
|
|
chart.setDomain(ChartTest.sampleCluster.startTime, ChartTest.sampleCluster.endTime);
|
|
chart.fetchMeasurementSets();
|
|
|
|
const requests = context.symbols.MockRemoteAPI.requests;
|
|
expect(requests.length).to.be(1);
|
|
ChartTest.respondWithSampleCluster(requests[0]);
|
|
|
|
evaluator = new ChartRevisionRange(chart);
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
|
|
return waitForComponentsToRender(context);
|
|
}).then(() => {
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
})
|
|
});
|
|
|
|
it('should report the list of revision for the locked indicator with differences to the previous point', () => {
|
|
const context = new BrowsingContext();
|
|
let chart;
|
|
let evaluator;
|
|
return importRevisionList(context).then((ChartRevisionRange) => {
|
|
chart = ChartTest.createInteractiveChartWithSampleCluster(context);
|
|
chart.setDomain(ChartTest.sampleCluster.startTime, ChartTest.sampleCluster.endTime);
|
|
chart.fetchMeasurementSets();
|
|
|
|
const requests = context.symbols.MockRemoteAPI.requests;
|
|
expect(requests.length).to.be(1);
|
|
ChartTest.respondWithSampleCluster(requests[0]);
|
|
|
|
evaluator = new ChartRevisionRange(chart);
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
|
|
return waitForComponentsToRender(context);
|
|
}).then(() => {
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
|
|
const currentView = chart.sampledTimeSeriesData('current');
|
|
chart.setIndicator(currentView.lastPoint().id, true);
|
|
|
|
let revisionList = evaluator.revisionList();
|
|
expect(revisionList).to.not.be(null);
|
|
expect(revisionList.length).to.be(2);
|
|
|
|
expect(revisionList[0].repository.label()).to.be('SomeApp');
|
|
expect(revisionList[0].label).to.be('r4004-r4006');
|
|
|
|
expect(revisionList[1].repository.label()).to.be('macOS');
|
|
expect(revisionList[1].label).to.be('15C50');
|
|
|
|
chart.setIndicator(1004, true); // Across macOS change.
|
|
|
|
revisionList = evaluator.revisionList();
|
|
expect(revisionList.length).to.be(2);
|
|
|
|
expect(revisionList[0].repository.label()).to.be('SomeApp');
|
|
expect(revisionList[0].label).to.be('r4003-r4004');
|
|
|
|
expect(revisionList[1].repository.label()).to.be('macOS');
|
|
expect(revisionList[1].label).to.be('15B42 - 15C50');
|
|
});
|
|
});
|
|
|
|
it('should report the list of revision for the selected range', () => {
|
|
const context = new BrowsingContext();
|
|
let chart;
|
|
let evaluator;
|
|
return importRevisionList(context).then((ChartRevisionRange) => {
|
|
chart = ChartTest.createInteractiveChartWithSampleCluster(context);
|
|
chart.setDomain(ChartTest.sampleCluster.startTime, ChartTest.sampleCluster.endTime);
|
|
chart.fetchMeasurementSets();
|
|
|
|
const requests = context.symbols.MockRemoteAPI.requests;
|
|
expect(requests.length).to.be(1);
|
|
ChartTest.respondWithSampleCluster(requests[0]);
|
|
|
|
evaluator = new ChartRevisionRange(chart);
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
|
|
return waitForComponentsToRender(context);
|
|
}).then(() => {
|
|
expect(evaluator.revisionList()).to.be(null);
|
|
|
|
const currentView = chart.sampledTimeSeriesData('current');
|
|
chart.setSelection([currentView.firstPoint().time + 1, currentView.lastPoint().time - 1]);
|
|
|
|
let revisionList = evaluator.revisionList();
|
|
expect(revisionList).to.not.be(null);
|
|
expect(revisionList.length).to.be(2);
|
|
|
|
expect(revisionList[0].repository.label()).to.be('SomeApp');
|
|
expect(revisionList[0].label).to.be('r4002-r4004'); // 4001 and 4005 are outliers and skipped.
|
|
|
|
expect(revisionList[1].repository.label()).to.be('macOS');
|
|
expect(revisionList[1].label).to.be('15B42 - 15C50');
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|