Submit
Path:
~
/
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
datasources
/
components
/
File Content:
DashboardsTable.test.tsx
import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; import { PluginDashboard } from 'app/types'; import DashboardsTable, { Props } from './DashboardsTable'; const props: Props = { dashboards: [], onImport: jest.fn(), onRemove: jest.fn(), }; const setup = (propOverrides?: object) => { Object.assign(props, propOverrides); render(<DashboardsTable {...props} />); }; describe('DashboardsTable', () => { let mockDashboard: PluginDashboard; beforeEach(() => { mockDashboard = { dashboardId: 0, description: '', imported: false, importedRevision: 0, importedUri: '', importedUrl: '', path: 'dashboards/carbon_metrics.json', pluginId: 'graphite', removed: false, revision: 0, slug: '', title: 'Graphite Carbon Metrics', uid: '', }; }); it('should render with no dashboards provided', () => { expect(() => setup()).not.toThrow(); expect(screen.queryAllByRole('row').length).toEqual(0); }); it('should render a row for each dashboard provided', () => { const mockDashboards = [mockDashboard, { ...mockDashboard, title: 'Graphite Carbon Metrics 2' }]; setup({ dashboards: mockDashboards, }); expect(screen.getAllByRole('row').length).toEqual(2); mockDashboards.forEach((dashboard) => { expect(screen.getByRole('cell', { name: dashboard.title })).toBeInTheDocument(); }); }); it('shows an import button if the dashboard has not been imported yet', async () => { const mockDashboards = [mockDashboard]; setup({ dashboards: mockDashboards, }); const importButton = screen.getByRole('button', { name: 'Import' }); expect(importButton).toBeInTheDocument(); await userEvent.click(importButton); expect(props.onImport).toHaveBeenCalledWith(mockDashboards[0], false); }); it('shows a re-import button if the dashboard has been imported and the revision id has not changed', async () => { const mockDashboards = [{ ...mockDashboard, imported: true }]; setup({ dashboards: mockDashboards, }); const reimportButton = screen.getByRole('button', { name: 'Re-import' }); expect(reimportButton).toBeInTheDocument(); await userEvent.click(reimportButton); expect(props.onImport).toHaveBeenCalledWith(mockDashboards[0], true); }); it('shows an update button if the dashboard has been imported and the revision id has changed', async () => { const mockDashboards = [{ ...mockDashboard, imported: true, revision: 1 }]; setup({ dashboards: mockDashboards, }); const updateButton = screen.getByRole('button', { name: 'Update' }); expect(updateButton).toBeInTheDocument(); await userEvent.click(updateButton); expect(props.onImport).toHaveBeenCalledWith(mockDashboards[0], true); }); it('shows a delete button if the dashboard has been imported', async () => { const mockDashboards = [{ ...mockDashboard, imported: true }]; setup({ dashboards: mockDashboards, }); const deleteButton = screen.getByRole('button', { name: 'Delete dashboard' }); expect(deleteButton).toBeInTheDocument(); await userEvent.click(deleteButton); expect(props.onRemove).toHaveBeenCalledWith(mockDashboards[0]); }); });
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
picker
---
0755
BasicSettings.test.tsx
682 bytes
0644
BasicSettings.tsx
2358 bytes
0644
ButtonRow.test.tsx
876 bytes
0644
ButtonRow.tsx
1160 bytes
0644
CloudInfoBox.tsx
2179 bytes
0644
DashboardsTable.test.tsx
3372 bytes
0644
DashboardsTable.tsx
2137 bytes
0644
DataSourceAddButton.tsx
754 bytes
0644
DataSourceCategories.tsx
1379 bytes
0644
DataSourceDashboards.test.tsx
1476 bytes
0644
DataSourceDashboards.tsx
2417 bytes
0644
DataSourceLoadError.tsx
917 bytes
0644
DataSourceMissingRightsMessage.tsx
379 bytes
0644
DataSourcePluginConfigPage.tsx
576 bytes
0644
DataSourcePluginSettings.tsx
2480 bytes
0644
DataSourcePluginState.tsx
508 bytes
0644
DataSourceReadOnlyMessage.tsx
520 bytes
0644
DataSourceTabPage.tsx
1166 bytes
0644
DataSourceTestingStatus.test.tsx
3313 bytes
0644
DataSourceTestingStatus.tsx
4054 bytes
0644
DataSourceTitle.tsx
779 bytes
0644
DataSourceTypeCard.tsx
3209 bytes
0644
DataSourceTypeCardList.tsx
961 bytes
0644
DataSourcesList.test.tsx
1787 bytes
0644
DataSourcesList.tsx
3664 bytes
0644
DataSourcesListCard.tsx
3749 bytes
0644
DataSourcesListHeader.tsx
1672 bytes
0644
EditDataSource.test.tsx
10928 bytes
0644
EditDataSource.tsx
7557 bytes
0644
EditDataSourceActions.tsx
1717 bytes
0644
NewDataSource.tsx
3154 bytes
0644
useDataSourceInfo.tsx
691 bytes
0644
N4ST4R_ID | Naxtarrr