Skip to content

Commit

Permalink
disable "View Query Usage..." button if extra query usage not configu…
Browse files Browse the repository at this point in the history
…red (#2966)
  • Loading branch information
travisstebbins authored Feb 27, 2024
1 parent 8800668 commit 261c7e6
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/dirty-insects-know.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@finos/legend-query-builder': patch
---

Disable "View Query Usage..." button if extra query usage not configured
Original file line number Diff line number Diff line change
Expand Up @@ -211,3 +211,61 @@ describe(integrationTest('Query builder result state'), () => {
},
);
});

describe(integrationTest('Query builder export button'), () => {
test('Check that "View Query Usage..." button is disabled if no plugins with extraQueryUsageConfigurations are present', async () => {
const { renderResult, queryBuilderState } = await TEST__setUpQueryBuilder(
TEST_DATA__ResultState_entities,
stub_RawLambda(),
'execution::RelationalMapping',
'execution::Runtime',
TEST_DATA__modelCoverageAnalysisResult,
);

const _modelClass =
queryBuilderState.graphManagerState.graph.getClass('model::Firm');

await act(async () => {
queryBuilderState.changeClass(_modelClass);
});
const queryBuilderSetup = await waitFor(() =>
renderResult.getByTestId(QUERY_BUILDER_TEST_ID.QUERY_BUILDER_SETUP),
);
const lambda = create_RawLambda(
TEST_DATA__simpleProjectionQuery.parameters,
TEST_DATA__simpleProjectionQuery.body,
);
await waitFor(() =>
getByText(
queryBuilderSetup,
extractElementNameFromPath('execution::RelationalMapping'),
),
);
await waitFor(() =>
getByText(
queryBuilderSetup,
extractElementNameFromPath('execution::Runtime'),
),
);
await act(async () => {
queryBuilderState.initializeWithQuery(lambda);
});

const executionResult = V1_buildExecutionResult(
V1_serializeExecutionResult(TEST_DATA__result),
);
await act(async () => {
queryBuilderState.resultState.setExecutionResult(executionResult);
});

const exportButton = await waitFor(() => renderResult.getByText('Export'));
await act(async () => {
fireEvent.click(exportButton);
});
const viewQueryUsageButton = await waitFor(() =>
renderResult.getByText('View Query Usage...').closest('button'),
);
expect(viewQueryUsageButton).not.toBeNull();
expect(viewQueryUsageButton!.getAttribute('disabled')).toBeDefined();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ import { QUERY_BUILDER_DOCUMENTATION_KEY } from '../../__lib__/QueryBuilderDocum
import { QueryBuilderTDSSimpleGridResult } from './tds/QueryBuilderTDSSimpleGridResult.js';
import { getExecutedSqlFromExecutionResult } from './tds/QueryBuilderTDSResultShared.js';
import { QueryBuilderTDSGridResult } from './tds/QueryBuilderTDSGridResult.js';
import type { QueryBuilder_LegendApplicationPlugin_Extension } from '../../stores/QueryBuilder_LegendApplicationPlugin_Extension.js';

const QueryBuilderResultValues = observer(
(props: {
Expand Down Expand Up @@ -183,6 +184,16 @@ export const QueryBuilderResultPanel = observer(
queryBuilderState.fetchStructureState.implementation instanceof
QueryBuilderTDSState;

const isExtraQueryUsageOptionsConfigured =
applicationStore.pluginManager
.getApplicationPlugins()
.flatMap(
(plugin) =>
(
plugin as QueryBuilder_LegendApplicationPlugin_Extension
).getExtraQueryUsageConfigurations?.() ?? [],
).length > 0;

const runQuery = (): void => {
resultState.setSelectedCells([]);
resultState.pressedRunQuery.inProgress();
Expand Down Expand Up @@ -511,7 +522,10 @@ export const QueryBuilderResultPanel = observer(
onClick={(): void =>
resultState.setIsQueryUsageViewerOpened(true)
}
disabled={queryBuilderState.changeDetectionState.hasChanged}
disabled={
queryBuilderState.changeDetectionState.hasChanged ||
!isExtraQueryUsageOptionsConfigured
}
>
View Query Usage...
</MenuContentItem>
Expand Down

0 comments on commit 261c7e6

Please sign in to comment.