Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TSVB] Add more functional tests for Table #105060

Merged
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export const FilterRatioAgg = (props) => {
query={model.numerator}
onChange={handleNumeratorQueryChange}
indexPatterns={[indexPattern]}
data-test-subj="filterRatioNumeratorInput"
/>
</EuiFormRow>
</EuiFlexItem>
Expand All @@ -124,6 +125,7 @@ export const FilterRatioAgg = (props) => {
query={model.denominator}
onChange={handleDenominatorQueryChange}
indexPatterns={[indexPattern]}
data-test-subj="filterRatioDenominatorInput"
/>
</EuiFormRow>
</EuiFlexItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@ import { fetchIndexPattern, isStringTypeIndexPattern } from '../../../common/ind

type QueryBarWrapperProps = Pick<QueryStringInputProps, 'query' | 'onChange'> & {
indexPatterns: IndexPatternValue[];
'data-test-subj'?: string;
};

export function QueryBarWrapper({ query, onChange, indexPatterns }: QueryBarWrapperProps) {
export function QueryBarWrapper({
query,
onChange,
indexPatterns,
'data-test-subj': dataTestSubj,
}: QueryBarWrapperProps) {
const { indexPatterns: indexPatternsService } = getDataStart();
const [indexes, setIndexes] = useState<QueryStringInputProps['indexPatterns']>([]);

Expand Down Expand Up @@ -58,6 +64,7 @@ export function QueryBarWrapper({ query, onChange, indexPatterns }: QueryBarWrap
onChange={onChange}
indexPatterns={indexes}
{...coreStartContext}
dataTestSubj={dataTestSubj}
/>
);
}
56 changes: 56 additions & 0 deletions test/functional/apps/visualize/_tsvb_table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,62 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
const tableData = await visualBuilder.getViewTable();
expect(tableData).to.be(EXPECTED);
});

it('should display correct values for variance aggregation', async () => {
const EXPECTED =
'OS Variance of bytes\nwin 8 2,707,941.822\nwin xp 2,595,612.24\nwin 7 16,055,541.306\nios 6,505,206.56\nosx 1,016,620.667';
await visualBuilder.selectAggType('Variance');
await visualBuilder.setFieldForAggregation('bytes');

const tableData = await visualBuilder.getViewTable();
expect(tableData).to.be(EXPECTED);
});

it('should display correct values for filter ratio aggregation with numerator and denominator', async () => {
const EXPECTED = 'OS Filter Ratio\nwin 8 2\nwin xp 0\nwin 7 3\nios 0\nosx 0';
await visualBuilder.selectAggType('Filter Ratio');
await visualBuilder.setFilterRatioOption('Numerator', 'extension.raw : "css"');
await visualBuilder.setFilterRatioOption('Denominator', 'bytes <= 3000');
await visChart.waitForVisualizationRenderingStabilized();

const tableData = await visualBuilder.getViewTable();
expect(tableData).to.be(EXPECTED);
});

it('should display correct values for average aggregation with last value time range mode', async () => {
const EXPECTED =
'OS Average of machine.ram\nwin 8 13,958,643,712\nwin xp 14,602,888,806.4\nwin 7 14,048,122,197.333\nios 11,166,914,969.6\nosx 20,401,094,656';
await visualBuilder.selectAggType('Average');
await visualBuilder.setFieldForAggregation('machine.ram');

const tableData = await visualBuilder.getViewTable();
expect(tableData).to.be(EXPECTED);
});

it('should display correct values for sum aggregation with entire time range mode', async () => {
const EXPECTED =
'OS Sum of memory\nwin 8 1,121,160\nwin xp 1,182,800\nwin 7 1,443,600\nios 971,360\nosx 858,480';
await visualBuilder.selectAggType('Sum');
await visualBuilder.setFieldForAggregation('memory');
await visualBuilder.clickPanelOptions('table');
await visualBuilder.setMetricsDataTimerangeMode('Entire time range');

const tableData = await visualBuilder.getViewTable();
expect(tableData).to.be(EXPECTED);
});

it('should display correct values for math aggregation', async () => {
const EXPECTED = 'OS Math\nwin 8 2,937\nwin xp 460\nwin 7 2,997\nios 1,095\nosx 1,724';
await visualBuilder.selectAggType('Min');
await visualBuilder.setFieldForAggregation('bytes');
await visualBuilder.createNewAgg();
await visualBuilder.selectAggType('math', 1);
await visualBuilder.fillInVariable('test', 'Min');
await visualBuilder.fillInExpression('params.test + 1');

const tableData = await visualBuilder.getViewTable();
expect(tableData).to.be(EXPECTED);
});
});
});
}
5 changes: 5 additions & 0 deletions test/functional/page_objects/visual_builder_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -727,4 +727,9 @@ export class VisualBuilderPageObject extends FtrService {
await this.comboBox.set('topHitOrderByFieldSelect', timeField);
});
}

public async setFilterRatioOption(optionType: 'Numerator' | 'Denominator', query: string) {
const optionInput = await this.testSubjects.find(`filterRatio${optionType}Input`);
await optionInput.type(query);
}
}