The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/public/app/features/trails/banners/NativeHistogramBanner.test.tsx

61 lines
2.5 KiB

import { render, screen, fireEvent } from '@testing-library/react';
import { DataTrail } from '../DataTrail';
import { MetricSelectedEvent } from '../shared';
import { NativeHistogramBanner } from './NativeHistogramBanner';
const mockTrail = {
publishEvent: jest.fn(),
} as unknown as DataTrail;
const mockProps = {
histogramsLoaded: true,
nativeHistograms: ['histogram1', 'histogram2'],
trail: mockTrail,
};
describe('NativeHistogramBanner', () => {
test('renders correctly when histograms are loaded', () => {
render(<NativeHistogramBanner {...mockProps} />);
expect(screen.getByText('Native histogram support')).toBeInTheDocument();
expect(
screen.getByText(
'Prometheus native histograms offer high resolution, high precision, simple usage in instrumentation and a way to combine and manipulate histograms in queries and in Grafana.'
)
).toBeInTheDocument();
});
test('Has a learn more button works', () => {
render(<NativeHistogramBanner {...mockProps} />);
const learnMoreButton = screen.getByText('Learn more');
expect(learnMoreButton).toBeInTheDocument();
});
test('See examples button works', () => {
render(<NativeHistogramBanner {...mockProps} />);
const seeExamplesButton = screen.getByText('> See examples');
expect(seeExamplesButton).toBeInTheDocument();
fireEvent.click(seeExamplesButton);
expect(screen.getByText('Native Histogram displayed as heatmap:')).toBeInTheDocument();
expect(screen.getByText('Native Histogram displayed as histogram:')).toBeInTheDocument();
expect(screen.getByText('Classic Histogram displayed as heatmap:')).toBeInTheDocument();
expect(screen.getByText('Classic Histogram displayed as histogram:')).toBeInTheDocument();
});
test('Native histograms buttons work', () => {
render(<NativeHistogramBanner {...mockProps} />);
fireEvent.click(screen.getByText('> See examples'));
const histogramButton = screen.getByText('histogram1');
expect(histogramButton).toBeInTheDocument();
fireEvent.click(histogramButton);
expect(mockTrail.publishEvent).toHaveBeenCalledWith(new MetricSelectedEvent('histogram1'), true);
});
test('Set that the banner has been shown in local storage when a user closes the banner', () => {
render(<NativeHistogramBanner {...mockProps} />);
// click the button with aria label "Close alert"
fireEvent.click(screen.getByLabelText('Close alert'));
expect(localStorage.getItem('nativeHistogramBanner')).toBe('true');
});
});