|
|
@@ -8,68 +8,147 @@ describe('StackdriverQueryCtrl', () => {
|
|
|
ctrl = createCtrlWithFakes();
|
|
|
});
|
|
|
|
|
|
- describe('when labels are fetched', () => {
|
|
|
- beforeEach(async () => {
|
|
|
- ctrl.metricLabels = { 'metric-key-1': ['metric-value-1'] };
|
|
|
- ctrl.resourceLabels = { 'resource-key-1': ['resource-value-1'] };
|
|
|
+ describe('group bys', () => {
|
|
|
+ describe('when labels are fetched', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ ctrl.metricLabels = { 'metric-key-1': ['metric-value-1'] };
|
|
|
+ ctrl.resourceLabels = { 'resource-key-1': ['resource-value-1'] };
|
|
|
|
|
|
- result = await ctrl.getGroupBys();
|
|
|
+ result = await ctrl.getGroupBys();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should populate group bys segments', () => {
|
|
|
+ expect(result.length).toBe(3);
|
|
|
+ expect(result[0].value).toBe('metric.label.metric-key-1');
|
|
|
+ expect(result[1].value).toBe('resource.label.resource-key-1');
|
|
|
+ expect(result[2].value).toBe('-- remove group by --');
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
- it('should populate group bys segments', () => {
|
|
|
- expect(result.length).toBe(3);
|
|
|
- expect(result[0].value).toBe('metric.label.metric-key-1');
|
|
|
- expect(result[1].value).toBe('resource.label.resource-key-1');
|
|
|
- expect(result[2].value).toBe('-- remove group by --');
|
|
|
+ describe('when a group by label is selected', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ ctrl.metricLabels = {
|
|
|
+ 'metric-key-1': ['metric-value-1'],
|
|
|
+ 'metric-key-2': ['metric-value-2'],
|
|
|
+ };
|
|
|
+ ctrl.resourceLabels = {
|
|
|
+ 'resource-key-1': ['resource-value-1'],
|
|
|
+ 'resource-key-2': ['resource-value-2'],
|
|
|
+ };
|
|
|
+ ctrl.target.aggregation.groupBys = ['metric.label.metric-key-1', 'resource.label.resource-key-1'];
|
|
|
+
|
|
|
+ result = await ctrl.getGroupBys();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should not be used to populate group bys segments', () => {
|
|
|
+ expect(result.length).toBe(3);
|
|
|
+ expect(result[0].value).toBe('metric.label.metric-key-2');
|
|
|
+ expect(result[1].value).toBe('resource.label.resource-key-2');
|
|
|
+ expect(result[2].value).toBe('-- remove group by --');
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
|
|
|
- describe('when a group by label is selected', () => {
|
|
|
- beforeEach(async () => {
|
|
|
- ctrl.metricLabels = {
|
|
|
- 'metric-key-1': ['metric-value-1'],
|
|
|
- 'metric-key-2': ['metric-value-2'],
|
|
|
- };
|
|
|
- ctrl.resourceLabels = {
|
|
|
- 'resource-key-1': ['resource-value-1'],
|
|
|
- 'resource-key-2': ['resource-value-2'],
|
|
|
- };
|
|
|
- ctrl.target.aggregation.groupBys = ['metric.label.metric-key-1', 'resource.label.resource-key-1'];
|
|
|
-
|
|
|
- result = await ctrl.getGroupBys();
|
|
|
+ describe('when a group by is selected', () => {
|
|
|
+ beforeEach(() => {
|
|
|
+ const removeSegment = { fake: true, value: '-- remove group by --' };
|
|
|
+ const segment = { value: 'groupby1' };
|
|
|
+ ctrl.groupBySegments = [segment, removeSegment];
|
|
|
+ ctrl.groupByChanged(segment);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should be added to group bys list', () => {
|
|
|
+ expect(ctrl.target.aggregation.groupBys.length).toBe(1);
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
- it('should not be used to populate group bys segments', () => {
|
|
|
- expect(result.length).toBe(3);
|
|
|
- expect(result[0].value).toBe('metric.label.metric-key-2');
|
|
|
- expect(result[1].value).toBe('resource.label.resource-key-2');
|
|
|
- expect(result[2].value).toBe('-- remove group by --');
|
|
|
+ describe('when a selected group by is removed', () => {
|
|
|
+ beforeEach(() => {
|
|
|
+ const removeSegment = { fake: true, value: '-- remove group by --' };
|
|
|
+ const segment = { value: 'groupby1' };
|
|
|
+ ctrl.groupBySegments = [segment, removeSegment];
|
|
|
+ ctrl.groupByChanged(removeSegment);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should be added to group bys list', () => {
|
|
|
+ expect(ctrl.target.aggregation.groupBys.length).toBe(0);
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- describe('when a group by is selected', () => {
|
|
|
- beforeEach(() => {
|
|
|
- const removeSegment = { fake: true, value: '-- remove group by --' };
|
|
|
- const segment = { value: 'groupby1' };
|
|
|
- ctrl.groupBySegments = [segment, removeSegment];
|
|
|
- ctrl.groupByChanged(segment);
|
|
|
+ describe('filters', () => {
|
|
|
+ describe('when values for a condition filter part are fetched', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ const segment = { type: 'condition' };
|
|
|
+ result = await ctrl.getFilters(segment, 0);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should populate group bys segments', () => {
|
|
|
+ expect(result.length).toBe(1);
|
|
|
+ expect(result[0].value).toBe('AND');
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
- it('should be added to group bys list', () => {
|
|
|
- expect(ctrl.target.aggregation.groupBys.length).toBe(1);
|
|
|
+ describe('when values for a operator filter part are fetched', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ const segment = { type: 'operator' };
|
|
|
+ result = await ctrl.getFilters(segment, 0);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should populate group bys segments', () => {
|
|
|
+ expect(result.length).toBe(4);
|
|
|
+ expect(result[0].value).toBe('=');
|
|
|
+ expect(result[1].value).toBe('!=');
|
|
|
+ expect(result[2].value).toBe('=~');
|
|
|
+ expect(result[3].value).toBe('!=~');
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
|
|
|
- describe('when a selected group by is removed', () => {
|
|
|
- beforeEach(() => {
|
|
|
- const removeSegment = { fake: true, value: '-- remove group by --' };
|
|
|
- const segment = { value: 'groupby1' };
|
|
|
- ctrl.groupBySegments = [segment, removeSegment];
|
|
|
- ctrl.groupByChanged(removeSegment);
|
|
|
+ describe('when values for a key filter part are fetched', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ ctrl.metricLabels = {
|
|
|
+ 'metric-key-1': ['metric-value-1'],
|
|
|
+ 'metric-key-2': ['metric-value-2'],
|
|
|
+ };
|
|
|
+ ctrl.resourceLabels = {
|
|
|
+ 'resource-key-1': ['resource-value-1'],
|
|
|
+ 'resource-key-2': ['resource-value-2'],
|
|
|
+ };
|
|
|
+
|
|
|
+ const segment = { type: 'key' };
|
|
|
+ result = await ctrl.getFilters(segment, 0);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should populate group bys segments', () => {
|
|
|
+ expect(result.length).toBe(5);
|
|
|
+ expect(result[0].value).toBe('metric.label.metric-key-1');
|
|
|
+ expect(result[1].value).toBe('metric.label.metric-key-2');
|
|
|
+ expect(result[2].value).toBe('resource.label.resource-key-1');
|
|
|
+ expect(result[3].value).toBe('resource.label.resource-key-2');
|
|
|
+ expect(result[4].value).toBe('-- remove filter --');
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
- it('should be added to group bys list', () => {
|
|
|
- expect(ctrl.target.aggregation.groupBys.length).toBe(0);
|
|
|
+ describe('when values for a value filter part are fetched', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ ctrl.metricLabels = {
|
|
|
+ 'metric-key-1': ['metric-value-1'],
|
|
|
+ 'metric-key-2': ['metric-value-2'],
|
|
|
+ };
|
|
|
+ ctrl.resourceLabels = {
|
|
|
+ 'resource-key-1': ['resource-value-1'],
|
|
|
+ 'resource-key-2': ['resource-value-2'],
|
|
|
+ };
|
|
|
+
|
|
|
+ ctrl.filterSegments = [{ type: 'key', value: 'metric-key-1' }, { type: 'operator', value: '=' }];
|
|
|
+
|
|
|
+ const segment = { type: 'value' };
|
|
|
+ result = await ctrl.getFilters(segment, 2);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should populate group bys segments', () => {
|
|
|
+ expect(result.length).toBe(1);
|
|
|
+ expect(result[0].value).toBe('metric-value-1');
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
});
|
|
|
@@ -90,7 +169,12 @@ function createCtrlWithFakes() {
|
|
|
|
|
|
const fakeSegmentServer = {
|
|
|
newSegment: obj => {
|
|
|
- return { value: obj.value };
|
|
|
+ return { value: obj.value ? obj.value : obj };
|
|
|
+ },
|
|
|
+ newOperators: ops => {
|
|
|
+ return ops.map(o => {
|
|
|
+ return { type: 'operator', value: o, text: o };
|
|
|
+ });
|
|
|
},
|
|
|
newPlusButton: () => {},
|
|
|
};
|
|
|
@@ -111,5 +195,6 @@ function createTarget() {
|
|
|
perSeriesAligner: '',
|
|
|
groupBys: [],
|
|
|
},
|
|
|
+ filters: [],
|
|
|
};
|
|
|
}
|