Files
grafana/public/app/core/components/NavLandingPage/NavLandingPage.test.tsx
mikkancso 290fc3aadf Admin: Add redirect notice for datasources to admin landing page (#72736)
* update copy of ConnectionsRedirectNotice

The Connections page is not that new anymore

* extend NavLandingPage with optional header

* show ConnectionsRedirectNotice on Admin landing page

* make ConnectionsRedirectNotice dismissable

* make ConnectionsRedirectNotice informational
2023-08-04 07:45:09 +02:00

88 lines
2.4 KiB
TypeScript

import { render, screen } from '@testing-library/react';
import React from 'react';
import { TestProvider } from 'test/helpers/TestProvider';
import { config } from '@grafana/runtime';
import { NavLandingPage } from './NavLandingPage';
describe('NavLandingPage', () => {
const mockSectionTitle = 'Section title';
const mockId = 'section';
const mockSectionUrl = 'mock-section-url';
const mockSectionSubtitle = 'Section subtitle';
const mockChild1 = {
text: 'Child 1',
subTitle: 'Child 1 subTitle',
id: 'child1',
url: 'mock-section-url/child1',
};
const mockChild2 = {
text: 'Child 2',
subTitle: 'Child 2 subTitle',
id: 'child2',
url: 'mock-section-url/child2',
};
const mockChild3 = {
text: 'Child 3',
id: 'child3',
subTitle: 'Child 3 subtitle',
url: 'mock-section-url/child3',
hideFromTabs: true,
children: [
{
text: 'Child 3.1',
subTitle: 'Child 3.1 subTitle',
id: 'child3.1',
url: 'mock-section-url/child3/child3.1',
},
],
};
const setup = (showHeader = false) => {
config.bootData.navTree = [
{
text: mockSectionTitle,
id: mockId,
url: mockSectionUrl,
subTitle: mockSectionSubtitle,
children: [mockChild1, mockChild2, mockChild3],
},
];
const header = showHeader ? <h3>Custom Header</h3> : undefined;
return render(
<TestProvider>
<NavLandingPage navId={mockId} header={header} />
</TestProvider>
);
};
it('uses the section text as a heading', () => {
setup();
expect(screen.getByRole('heading', { name: mockSectionTitle })).toBeInTheDocument();
});
it('renders the section subtitle', () => {
setup();
expect(screen.getByText(mockSectionSubtitle)).toBeInTheDocument();
});
it('renders a link for each direct child', () => {
setup();
expect(screen.getByRole('link', { name: mockChild1.text })).toBeInTheDocument();
expect(screen.getByRole('link', { name: mockChild2.text })).toBeInTheDocument();
});
it('renders the subTitle for each direct child', () => {
setup();
expect(screen.getByText(mockChild1.subTitle)).toBeInTheDocument();
expect(screen.getByText(mockChild2.subTitle)).toBeInTheDocument();
});
it('renders the custom header when supplied', () => {
setup(true);
expect(screen.getByRole('heading', { name: 'Custom Header' })).toBeInTheDocument();
});
});