stackdriver: add unit tests to resolve unit function

This commit is contained in:
Erik Sundell
2018-09-27 14:24:28 +02:00
parent 251bb09aed
commit 92f50ca384
2 changed files with 54 additions and 2 deletions

View File

@@ -86,7 +86,7 @@ export default class StackdriverDatasource {
return interpolatedGroupBys;
}
resolveUnit(targets: any[]) {
resolvePanelUnitFromTargets(targets: any[]) {
let unit = 'none';
if (targets.length > 0 && targets.every(t => t.unit === targets[0].unit)) {
if (stackdriverUnitMappings.hasOwnProperty(targets[0].unit)) {
@@ -105,7 +105,7 @@ export default class StackdriverDatasource {
return;
}
const unit = this.resolveUnit(options.targets);
const unit = this.resolvePanelUnitFromTargets(options.targets);
queryRes.series.forEach(series => {
result.push({
target: series.name,

View File

@@ -219,4 +219,56 @@ describe('StackdriverDataSource', () => {
});
});
});
describe('unit parsing', () => {
let ds, res;
beforeEach(() => {
ds = new StackdriverDataSource(instanceSettings, {}, templateSrv, timeSrv);
});
describe('when theres only one target', () => {
describe('and the stackdriver unit doesnt have a corresponding grafana unit', () => {
beforeEach(() => {
res = ds.resolvePanelUnitFromTargets([{ unit: 'megaseconds' }]);
});
it('should return none', () => {
expect(res).toEqual('none');
});
});
describe('and the stackdriver unit has a corresponding grafana unit', () => {
beforeEach(() => {
res = ds.resolvePanelUnitFromTargets([{ unit: 'bit' }]);
});
it('should return bits', () => {
expect(res).toEqual('bits');
});
});
});
describe('when theres more than one target', () => {
describe('and all target units are the same', () => {
beforeEach(() => {
res = ds.resolvePanelUnitFromTargets([{ unit: 'bit' }, { unit: 'bit' }]);
});
it('should return bits', () => {
expect(res).toEqual('bits');
});
});
describe('and all target units are the same but doesnt have grafana mappings', () => {
beforeEach(() => {
res = ds.resolvePanelUnitFromTargets([{ unit: 'megaseconds' }, { unit: 'megaseconds' }]);
});
it('should return the default value - none', () => {
expect(res).toEqual('none');
});
});
describe('and all target units are not the same', () => {
beforeEach(() => {
res = ds.resolvePanelUnitFromTargets([{ unit: 'bit' }, { unit: 'min' }]);
});
it('should return the default value - none', () => {
expect(res).toEqual('none');
});
});
});
});
});