mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
|
|
import { fireEvent, render, screen } from '@testing-library/react';
|
||
|
|
import React from 'react';
|
||
|
|
|
||
|
|
import { config, locationService } from '@grafana/runtime';
|
||
|
|
import { ConfirmModal } from '@grafana/ui';
|
||
|
|
|
||
|
|
import appEvents from '../../../core/app_events';
|
||
|
|
import { ShowModalReactEvent } from '../../../types/events';
|
||
|
|
|
||
|
|
import { GoToSnapshotOriginButton } from './GoToSnapshotOriginButton';
|
||
|
|
|
||
|
|
describe('GoToSnapshotOriginButton component', () => {
|
||
|
|
beforeEach(async () => {
|
||
|
|
locationService.push('/');
|
||
|
|
const location = window.location;
|
||
|
|
//@ts-ignore
|
||
|
|
delete window.location;
|
||
|
|
window.location = {
|
||
|
|
...location,
|
||
|
|
href: 'http://snapshots.grafana.com/snapshots/dashboard/abcdefghi/my-dash',
|
||
|
|
};
|
||
|
|
jest.spyOn(appEvents, 'publish');
|
||
|
|
});
|
||
|
|
config.appUrl = 'http://snapshots.grafana.com/';
|
||
|
|
|
||
|
|
it('renders button and triggers onClick redirects to the original dashboard', () => {
|
||
|
|
render(<GoToSnapshotOriginButton originalURL={'/d/c0d2742f-b827-466d-9269-fb34d6af24ff'} />);
|
||
|
|
|
||
|
|
// Check if the button renders with the correct testid
|
||
|
|
expect(screen.getByTestId('button-snapshot')).toBeInTheDocument();
|
||
|
|
|
||
|
|
// Simulate a button click
|
||
|
|
fireEvent.click(screen.getByTestId('button-snapshot'));
|
||
|
|
|
||
|
|
expect(appEvents.publish).toHaveBeenCalledTimes(0);
|
||
|
|
expect(locationService.getLocation().pathname).toEqual('/d/c0d2742f-b827-466d-9269-fb34d6af24ff');
|
||
|
|
expect(window.location.href).toBe('http://snapshots.grafana.com/snapshots/dashboard/abcdefghi/my-dash');
|
||
|
|
});
|
||
|
|
|
||
|
|
it('renders button and triggers onClick opens a confirmation modal', () => {
|
||
|
|
render(<GoToSnapshotOriginButton originalURL={'http://www.anotherdomain.com/'} />);
|
||
|
|
|
||
|
|
// Check if the button renders with the correct testid
|
||
|
|
expect(screen.getByTestId('button-snapshot')).toBeInTheDocument();
|
||
|
|
|
||
|
|
// Simulate a button click
|
||
|
|
fireEvent.click(screen.getByTestId('button-snapshot'));
|
||
|
|
|
||
|
|
expect(appEvents.publish).toHaveBeenCalledTimes(1);
|
||
|
|
expect(appEvents.publish).toHaveBeenCalledWith(
|
||
|
|
new ShowModalReactEvent(
|
||
|
|
expect.objectContaining({
|
||
|
|
component: ConfirmModal,
|
||
|
|
})
|
||
|
|
)
|
||
|
|
);
|
||
|
|
expect(locationService.getLocation().pathname).toEqual('/');
|
||
|
|
expect(window.location.href).toBe('http://snapshots.grafana.com/snapshots/dashboard/abcdefghi/my-dash');
|
||
|
|
});
|
||
|
|
});
|