UpdateModal.test.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import React from 'react';
  2. import { fireEvent, render, screen } from '../../../../../../tests/test-utils';
  3. import { UpdateModal } from './UpdateModal';
  4. describe('UpdateModal', () => {
  5. const app = { name: 'My App' };
  6. const newVersion = '1.2.3';
  7. it('renders with the correct title and version number', () => {
  8. // Arrange
  9. render(<UpdateModal info={app} newVersion={newVersion} isOpen onClose={jest.fn()} onConfirm={jest.fn()} />);
  10. // Assert
  11. expect(screen.getByText(`Update ${app.name} ?`)).toBeInTheDocument();
  12. expect(screen.getByText(`${newVersion}`)).toBeInTheDocument();
  13. });
  14. it('should not render when isOpen is false', () => {
  15. // Arrange
  16. render(<UpdateModal info={app} newVersion={newVersion} isOpen={false} onClose={jest.fn()} onConfirm={jest.fn()} />);
  17. const modal = screen.queryByTestId('modal');
  18. // Assert (modal should have style display: none)
  19. expect(modal).toHaveStyle('display: none');
  20. });
  21. it('calls onClose when the close button is clicked', () => {
  22. // Arrange
  23. const onClose = jest.fn();
  24. render(<UpdateModal info={app} newVersion={newVersion} isOpen onClose={onClose} onConfirm={jest.fn()} />);
  25. // Act
  26. const closeButton = screen.getByTestId('modal-close-button');
  27. fireEvent.click(closeButton);
  28. expect(onClose).toHaveBeenCalled();
  29. });
  30. it('calls onConfirm when the update button is clicked', () => {
  31. // Arrange
  32. const onConfirm = jest.fn();
  33. render(<UpdateModal info={app} newVersion={newVersion} isOpen onClose={jest.fn()} onConfirm={onConfirm} />);
  34. // Act
  35. const updateButton = screen.getByText('Update');
  36. fireEvent.click(updateButton);
  37. expect(onConfirm).toHaveBeenCalled();
  38. });
  39. });