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();
});
});