version.spec.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import {routerContext} from 'fixtures/js-stubs/routerContext';
  2. import {act, render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  3. import Version from 'sentry/components/version';
  4. const VERSION = 'foo.bar.Baz@1.0.0+20200101';
  5. describe('Version', () => {
  6. const context = routerContext();
  7. afterEach(() => {
  8. jest.resetAllMocks();
  9. });
  10. it('renders', () => {
  11. const {container} = render(<Version version={VERSION} />);
  12. expect(container).toSnapshot();
  13. });
  14. it('shows correct parsed version', () => {
  15. // component uses @sentry/release-parser package for parsing versions
  16. render(<Version version={VERSION} />);
  17. expect(screen.getByText('1.0.0 (20200101)')).toBeInTheDocument();
  18. });
  19. it('links to release page', () => {
  20. render(<Version version={VERSION} projectId="1" />, {
  21. context,
  22. });
  23. userEvent.click(screen.getByText('1.0.0 (20200101)'));
  24. expect(context.context.router.push).toHaveBeenCalledWith({
  25. pathname: '/organizations/org-slug/releases/foo.bar.Baz%401.0.0%2B20200101/',
  26. query: {project: '1'},
  27. });
  28. });
  29. it('shows raw version in tooltip', () => {
  30. jest.useFakeTimers();
  31. render(<Version version={VERSION} tooltipRawVersion />, {
  32. context,
  33. });
  34. expect(screen.queryByText(VERSION)).not.toBeInTheDocument();
  35. // Activate tooltip
  36. act(() => {
  37. userEvent.hover(screen.getByText('1.0.0 (20200101)'));
  38. jest.advanceTimersByTime(50);
  39. });
  40. expect(screen.getByText(VERSION)).toBeInTheDocument();
  41. });
  42. });