diff --git a/public/app/features/scopes/tests/dashboardsList.test.ts b/public/app/features/scopes/tests/dashboardsList.test.ts index e1f6853385..e5215a89f8 100644 --- a/public/app/features/scopes/tests/dashboardsList.test.ts +++ b/public/app/features/scopes/tests/dashboardsList.test.ts @@ -1,24 +1,24 @@ import { config } from '@grafana/runtime'; import { - // clearNotFound, - // expandDashboardFolder, - // searchDashboards, - // toggleDashboards, + clearNotFound, + expandDashboardFolder, + searchDashboards, + toggleDashboards, updateScopes, } from './utils/actions'; -// import { -// expectDashboardFolderNotInDocument, -// expectDashboardInDocument, -// expectDashboardLength, -// expectDashboardNotInDocument, -// expectDashboardSearchValue, -// expectDashboardsSearch, -// expectNoDashboardsForFilter, -// expectNoDashboardsForScope, -// expectNoDashboardsNoScopes, -// expectNoDashboardsSearch, -// } from './utils/assertions'; +import { + expectDashboardFolderNotInDocument, + expectDashboardInDocument, + expectDashboardLength, + expectDashboardNotInDocument, + expectDashboardSearchValue, + expectDashboardsSearch, + expectNoDashboardsForFilter, + expectNoDashboardsForScope, + expectNoDashboardsNoScopes, + expectNoDashboardsSearch, +} from './utils/assertions'; import { fetchDashboardsSpy, getDatasource, getInstanceSettings, getMock } from './utils/mocks'; import { renderDashboard, resetScenes } from './utils/render'; @@ -50,201 +50,201 @@ describe('Dashboards list', () => { expect(fetchDashboardsSpy).not.toHaveBeenCalled(); }); -// it('Fetches dashboards list when the list is expanded', async () => { -// await toggleDashboards(); -// await updateScopes(['mimir']); -// expect(fetchDashboardsSpy).toHaveBeenCalled(); -// }); -// -// it('Fetches dashboards list when the list is expanded after scope selection', async () => { -// await updateScopes(['mimir']); -// await toggleDashboards(); -// expect(fetchDashboardsSpy).toHaveBeenCalled(); -// }); -// -// it('Shows dashboards for multiple scopes', async () => { -// await toggleDashboards(); -// await updateScopes(['grafana']); -// await expandDashboardFolder('General'); -// await expandDashboardFolder('Observability'); -// await expandDashboardFolder('Usage'); -// expectDashboardFolderNotInDocument('Components'); -// expectDashboardFolderNotInDocument('Investigations'); -// expectDashboardInDocument('general-data-sources'); -// expectDashboardInDocument('general-usage'); -// expectDashboardInDocument('observability-backend-errors'); -// expectDashboardInDocument('observability-backend-logs'); -// expectDashboardInDocument('observability-frontend-errors'); -// expectDashboardInDocument('observability-frontend-logs'); -// expectDashboardInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardInDocument('usage-usage-overview'); -// expectDashboardInDocument('frontend'); -// expectDashboardInDocument('overview'); -// expectDashboardInDocument('stats'); -// expectDashboardNotInDocument('multiple3-datasource-errors'); -// expectDashboardNotInDocument('multiple4-datasource-logs'); -// expectDashboardNotInDocument('multiple0-ingester'); -// expectDashboardNotInDocument('multiple1-distributor'); -// expectDashboardNotInDocument('multiple2-compacter'); -// expectDashboardNotInDocument('another-stats'); -// -// await updateScopes(['grafana', 'mimir']); -// await expandDashboardFolder('General'); -// await expandDashboardFolder('Observability'); -// await expandDashboardFolder('Usage'); -// await expandDashboardFolder('Components'); -// await expandDashboardFolder('Investigations'); -// expectDashboardInDocument('general-data-sources'); -// expectDashboardInDocument('general-usage'); -// expectDashboardInDocument('observability-backend-errors'); -// expectDashboardInDocument('observability-backend-logs'); -// expectDashboardInDocument('observability-frontend-errors'); -// expectDashboardInDocument('observability-frontend-logs'); -// expectDashboardInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardInDocument('usage-usage-overview'); -// expectDashboardInDocument('frontend'); -// expectDashboardInDocument('overview'); -// expectDashboardInDocument('stats'); -// expectDashboardLength('multiple3-datasource-errors', 2); -// expectDashboardLength('multiple4-datasource-logs', 2); -// expectDashboardLength('multiple0-ingester', 2); -// expectDashboardLength('multiple1-distributor', 2); -// expectDashboardLength('multiple2-compacter', 2); -// expectDashboardInDocument('another-stats'); -// -// await updateScopes(['grafana']); -// await expandDashboardFolder('General'); -// await expandDashboardFolder('Observability'); -// await expandDashboardFolder('Usage'); -// expectDashboardFolderNotInDocument('Components'); -// expectDashboardFolderNotInDocument('Investigations'); -// expectDashboardInDocument('general-data-sources'); -// expectDashboardInDocument('general-usage'); -// expectDashboardInDocument('observability-backend-errors'); -// expectDashboardInDocument('observability-backend-logs'); -// expectDashboardInDocument('observability-frontend-errors'); -// expectDashboardInDocument('observability-frontend-logs'); -// expectDashboardInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardInDocument('usage-usage-overview'); -// expectDashboardInDocument('frontend'); -// expectDashboardInDocument('overview'); -// expectDashboardInDocument('stats'); -// expectDashboardFolderNotInDocument('multiple3-datasource-errors'); -// expectDashboardFolderNotInDocument('multiple4-datasource-logs'); -// expectDashboardFolderNotInDocument('multiple0-ingester'); -// expectDashboardFolderNotInDocument('multiple1-distributor'); -// expectDashboardFolderNotInDocument('multiple2-compacter'); -// expectDashboardFolderNotInDocument('another-stats'); -// }); -// -// it('Filters the dashboards list for dashboards', async () => { -// await toggleDashboards(); -// await updateScopes(['grafana']); -// await expandDashboardFolder('General'); -// await expandDashboardFolder('Observability'); -// await expandDashboardFolder('Usage'); -// expectDashboardInDocument('general-data-sources'); -// expectDashboardInDocument('general-usage'); -// expectDashboardInDocument('observability-backend-errors'); -// expectDashboardInDocument('observability-backend-logs'); -// expectDashboardInDocument('observability-frontend-errors'); -// expectDashboardInDocument('observability-frontend-logs'); -// expectDashboardInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardInDocument('usage-usage-overview'); -// expectDashboardInDocument('frontend'); -// expectDashboardInDocument('overview'); -// expectDashboardInDocument('stats'); -// -// await searchDashboards('Stats'); -// expectDashboardFolderNotInDocument('general-data-sources'); -// expectDashboardFolderNotInDocument('general-usage'); -// expectDashboardFolderNotInDocument('observability-backend-errors'); -// expectDashboardFolderNotInDocument('observability-backend-logs'); -// expectDashboardFolderNotInDocument('observability-frontend-errors'); -// expectDashboardFolderNotInDocument('observability-frontend-logs'); -// expectDashboardFolderNotInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardFolderNotInDocument('usage-usage-overview'); -// expectDashboardFolderNotInDocument('frontend'); -// expectDashboardFolderNotInDocument('overview'); -// expectDashboardInDocument('stats'); -// }); -// -// it('Filters the dashboards list for folders', async () => { -// await toggleDashboards(); -// await updateScopes(['grafana']); -// await expandDashboardFolder('General'); -// await expandDashboardFolder('Observability'); -// await expandDashboardFolder('Usage'); -// expectDashboardInDocument('general-data-sources'); -// expectDashboardInDocument('general-usage'); -// expectDashboardInDocument('observability-backend-errors'); -// expectDashboardInDocument('observability-backend-logs'); -// expectDashboardInDocument('observability-frontend-errors'); -// expectDashboardInDocument('observability-frontend-logs'); -// expectDashboardInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardInDocument('usage-usage-overview'); -// expectDashboardInDocument('frontend'); -// expectDashboardInDocument('overview'); -// expectDashboardInDocument('stats'); -// -// await searchDashboards('Usage'); -// expectDashboardFolderNotInDocument('general-data-sources'); -// expectDashboardInDocument('general-usage'); -// expectDashboardFolderNotInDocument('observability-backend-errors'); -// expectDashboardFolderNotInDocument('observability-backend-logs'); -// expectDashboardFolderNotInDocument('observability-frontend-errors'); -// expectDashboardFolderNotInDocument('observability-frontend-logs'); -// expectDashboardInDocument('usage-data-sources'); -// expectDashboardInDocument('usage-stats'); -// expectDashboardInDocument('usage-usage-overview'); -// expectDashboardFolderNotInDocument('frontend'); -// expectDashboardFolderNotInDocument('overview'); -// expectDashboardFolderNotInDocument('stats'); -// }); -// -// it('Deduplicates the dashboards list', async () => { -// await toggleDashboards(); -// await updateScopes(['dev', 'ops']); -// await expandDashboardFolder('Cardinality Management'); -// await expandDashboardFolder('Usage Insights'); -// expectDashboardLength('cardinality-management-labels', 1); -// expectDashboardLength('cardinality-management-metrics', 1); -// expectDashboardLength('cardinality-management-overview', 1); -// expectDashboardLength('usage-insights-alertmanager', 1); -// expectDashboardLength('usage-insights-data-sources', 1); -// expectDashboardLength('usage-insights-metrics-ingestion', 1); -// expectDashboardLength('usage-insights-overview', 1); -// expectDashboardLength('usage-insights-query-errors', 1); -// expectDashboardLength('billing-usage', 1); -// }); -// -// it('Shows a proper message when no scopes are selected', async () => { -// await toggleDashboards(); -// expectNoDashboardsNoScopes(); -// expectNoDashboardsSearch(); -// }); -// -// it('Does not show the input when there are no dashboards found for scope', async () => { -// await toggleDashboards(); -// await updateScopes(['cloud']); -// expectNoDashboardsForScope(); -// expectNoDashboardsSearch(); -// }); -// -// it('Shows the input and a message when there are no dashboards found for filter', async () => { -// await toggleDashboards(); -// await updateScopes(['mimir']); -// await searchDashboards('unknown'); -// expectDashboardsSearch(); -// expectNoDashboardsForFilter(); -// -// await clearNotFound(); -// expectDashboardSearchValue(''); -// }); - }); + it('Fetches dashboards list when the list is expanded', async () => { + await toggleDashboards(); + await updateScopes(['mimir']); + expect(fetchDashboardsSpy).toHaveBeenCalled(); + }); + + it('Fetches dashboards list when the list is expanded after scope selection', async () => { + await updateScopes(['mimir']); + await toggleDashboards(); + expect(fetchDashboardsSpy).toHaveBeenCalled(); + }); + + it('Shows dashboards for multiple scopes', async () => { + await toggleDashboards(); + await updateScopes(['grafana']); + await expandDashboardFolder('General'); + await expandDashboardFolder('Observability'); + await expandDashboardFolder('Usage'); + expectDashboardFolderNotInDocument('Components'); + expectDashboardFolderNotInDocument('Investigations'); + expectDashboardInDocument('general-data-sources'); + expectDashboardInDocument('general-usage'); + expectDashboardInDocument('observability-backend-errors'); + expectDashboardInDocument('observability-backend-logs'); + expectDashboardInDocument('observability-frontend-errors'); + expectDashboardInDocument('observability-frontend-logs'); + expectDashboardInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardInDocument('usage-usage-overview'); + expectDashboardInDocument('frontend'); + expectDashboardInDocument('overview'); + expectDashboardInDocument('stats'); + expectDashboardNotInDocument('multiple3-datasource-errors'); + expectDashboardNotInDocument('multiple4-datasource-logs'); + expectDashboardNotInDocument('multiple0-ingester'); + expectDashboardNotInDocument('multiple1-distributor'); + expectDashboardNotInDocument('multiple2-compacter'); + expectDashboardNotInDocument('another-stats'); + + await updateScopes(['grafana', 'mimir']); + await expandDashboardFolder('General'); + await expandDashboardFolder('Observability'); + await expandDashboardFolder('Usage'); + await expandDashboardFolder('Components'); + await expandDashboardFolder('Investigations'); + expectDashboardInDocument('general-data-sources'); + expectDashboardInDocument('general-usage'); + expectDashboardInDocument('observability-backend-errors'); + expectDashboardInDocument('observability-backend-logs'); + expectDashboardInDocument('observability-frontend-errors'); + expectDashboardInDocument('observability-frontend-logs'); + expectDashboardInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardInDocument('usage-usage-overview'); + expectDashboardInDocument('frontend'); + expectDashboardInDocument('overview'); + expectDashboardInDocument('stats'); + expectDashboardLength('multiple3-datasource-errors', 2); + expectDashboardLength('multiple4-datasource-logs', 2); + expectDashboardLength('multiple0-ingester', 2); + expectDashboardLength('multiple1-distributor', 2); + expectDashboardLength('multiple2-compacter', 2); + expectDashboardInDocument('another-stats'); + + await updateScopes(['grafana']); + await expandDashboardFolder('General'); + await expandDashboardFolder('Observability'); + await expandDashboardFolder('Usage'); + expectDashboardFolderNotInDocument('Components'); + expectDashboardFolderNotInDocument('Investigations'); + expectDashboardInDocument('general-data-sources'); + expectDashboardInDocument('general-usage'); + expectDashboardInDocument('observability-backend-errors'); + expectDashboardInDocument('observability-backend-logs'); + expectDashboardInDocument('observability-frontend-errors'); + expectDashboardInDocument('observability-frontend-logs'); + expectDashboardInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardInDocument('usage-usage-overview'); + expectDashboardInDocument('frontend'); + expectDashboardInDocument('overview'); + expectDashboardInDocument('stats'); + expectDashboardFolderNotInDocument('multiple3-datasource-errors'); + expectDashboardFolderNotInDocument('multiple4-datasource-logs'); + expectDashboardFolderNotInDocument('multiple0-ingester'); + expectDashboardFolderNotInDocument('multiple1-distributor'); + expectDashboardFolderNotInDocument('multiple2-compacter'); + expectDashboardFolderNotInDocument('another-stats'); + }); + + it('Filters the dashboards list for dashboards', async () => { + await toggleDashboards(); + await updateScopes(['grafana']); + await expandDashboardFolder('General'); + await expandDashboardFolder('Observability'); + await expandDashboardFolder('Usage'); + expectDashboardInDocument('general-data-sources'); + expectDashboardInDocument('general-usage'); + expectDashboardInDocument('observability-backend-errors'); + expectDashboardInDocument('observability-backend-logs'); + expectDashboardInDocument('observability-frontend-errors'); + expectDashboardInDocument('observability-frontend-logs'); + expectDashboardInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardInDocument('usage-usage-overview'); + expectDashboardInDocument('frontend'); + expectDashboardInDocument('overview'); + expectDashboardInDocument('stats'); + + await searchDashboards('Stats'); + expectDashboardFolderNotInDocument('general-data-sources'); + expectDashboardFolderNotInDocument('general-usage'); + expectDashboardFolderNotInDocument('observability-backend-errors'); + expectDashboardFolderNotInDocument('observability-backend-logs'); + expectDashboardFolderNotInDocument('observability-frontend-errors'); + expectDashboardFolderNotInDocument('observability-frontend-logs'); + expectDashboardFolderNotInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardFolderNotInDocument('usage-usage-overview'); + expectDashboardFolderNotInDocument('frontend'); + expectDashboardFolderNotInDocument('overview'); + expectDashboardInDocument('stats'); + }); + + it('Filters the dashboards list for folders', async () => { + await toggleDashboards(); + await updateScopes(['grafana']); + await expandDashboardFolder('General'); + await expandDashboardFolder('Observability'); + await expandDashboardFolder('Usage'); + expectDashboardInDocument('general-data-sources'); + expectDashboardInDocument('general-usage'); + expectDashboardInDocument('observability-backend-errors'); + expectDashboardInDocument('observability-backend-logs'); + expectDashboardInDocument('observability-frontend-errors'); + expectDashboardInDocument('observability-frontend-logs'); + expectDashboardInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardInDocument('usage-usage-overview'); + expectDashboardInDocument('frontend'); + expectDashboardInDocument('overview'); + expectDashboardInDocument('stats'); + + await searchDashboards('Usage'); + expectDashboardFolderNotInDocument('general-data-sources'); + expectDashboardInDocument('general-usage'); + expectDashboardFolderNotInDocument('observability-backend-errors'); + expectDashboardFolderNotInDocument('observability-backend-logs'); + expectDashboardFolderNotInDocument('observability-frontend-errors'); + expectDashboardFolderNotInDocument('observability-frontend-logs'); + expectDashboardInDocument('usage-data-sources'); + expectDashboardInDocument('usage-stats'); + expectDashboardInDocument('usage-usage-overview'); + expectDashboardFolderNotInDocument('frontend'); + expectDashboardFolderNotInDocument('overview'); + expectDashboardFolderNotInDocument('stats'); + }); + + it('Deduplicates the dashboards list', async () => { + await toggleDashboards(); + await updateScopes(['dev', 'ops']); + await expandDashboardFolder('Cardinality Management'); + await expandDashboardFolder('Usage Insights'); + expectDashboardLength('cardinality-management-labels', 1); + expectDashboardLength('cardinality-management-metrics', 1); + expectDashboardLength('cardinality-management-overview', 1); + expectDashboardLength('usage-insights-alertmanager', 1); + expectDashboardLength('usage-insights-data-sources', 1); + expectDashboardLength('usage-insights-metrics-ingestion', 1); + expectDashboardLength('usage-insights-overview', 1); + expectDashboardLength('usage-insights-query-errors', 1); + expectDashboardLength('billing-usage', 1); + }); + + it('Shows a proper message when no scopes are selected', async () => { + await toggleDashboards(); + expectNoDashboardsNoScopes(); + expectNoDashboardsSearch(); + }); + + it('Does not show the input when there are no dashboards found for scope', async () => { + await toggleDashboards(); + await updateScopes(['cloud']); + expectNoDashboardsForScope(); + expectNoDashboardsSearch(); + }); + + it('Shows the input and a message when there are no dashboards found for filter', async () => { + await toggleDashboards(); + await updateScopes(['mimir']); + await searchDashboards('unknown'); + expectDashboardsSearch(); + expectNoDashboardsForFilter(); + + await clearNotFound(); + expectDashboardSearchValue(''); + }); +});