import React from 'react'; import { vi, describe, it, expect } from 'vitest'; import userEvent from '@testing-library/user-event'; import { type FetchResponse, openmrsFetch, showSnackbar } from '@openmrs/esm-framework'; import { screen } from '@testing-library/react'; import { mockQueues, mockQueueEntryAlice } from '__mocks__'; import { renderWithSwr } from 'tools'; import UndoTransitionQueueEntryModal from './undo-transition-queue-entry.modal'; import DeleteQueueEntryModal from './delete-queue-entry.modal'; const mockOpenmrsFetch = vi.mocked(openmrsFetch); vi.mock('../hooks/useQueues', () => { return { useQueues: vi.fn().mockReturnValue({ queues: mockQueues, }), }; }); describe('UndoTransitionQueueEntryModal', () => { const queueEntry = mockQueueEntryAlice; it('has a cancel button that closes the modal', async () => { const closeModal = vi.fn(); const user = userEvent.setup(); renderWithSwr(); const cancelButton = screen.getByText('Cancel'); await user.click(cancelButton); expect(closeModal).toHaveBeenCalled(); }); it('has an working submit button', async () => { mockOpenmrsFetch.mockResolvedValue({ status: 200, } as unknown as FetchResponse); const user = userEvent.setup(); renderWithSwr( {}} />); const submitButton = screen.getByRole('button', { name: /Undo transition/ }); expect(submitButton).toBeEnabled(); await user.click(submitButton); expect(mockOpenmrsFetch).toHaveBeenCalled(); expect(showSnackbar).toHaveBeenCalled(); }); }); describe('VoidQueueEntryModal', () => { const queueEntry = mockQueueEntryAlice; it('has a cancel button that closes the modal', async () => { const closeModal = vi.fn(); const user = userEvent.setup(); renderWithSwr(); const cancelButton = screen.getByText('Cancel'); await user.click(cancelButton); expect(closeModal).toHaveBeenCalled(); }); it('has an working submit button', async () => { mockOpenmrsFetch.mockResolvedValue({ status: 200, } as unknown as FetchResponse); const user = userEvent.setup(); renderWithSwr( {}} />); const submitButton = screen.getByRole('button', { name: /Delete queue entry/ }); expect(submitButton).toBeEnabled(); await user.click(submitButton); expect(mockOpenmrsFetch).toHaveBeenCalled(); expect(showSnackbar).toHaveBeenCalled(); }); });