This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { render, screen, waitFor } from '@testing-library/react';
|
||||
import { act, render, screen, waitFor } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import { beforeEach, expect, it, vi } from 'vitest';
|
||||
import { ReportNotificationsPage } from './ReportNotificationsPage';
|
||||
@@ -57,3 +57,21 @@ it('reports a failed read without pretending success', async () => {
|
||||
expect(await screen.findByRole('alert')).toHaveTextContent('标记失败');
|
||||
expect(screen.getByRole('button', { name: '标记已读' })).toBeEnabled();
|
||||
});
|
||||
|
||||
it('does not reopen a closed dialog when the read response arrives later', async () => {
|
||||
const user = userEvent.setup();
|
||||
render(<ReportNotificationsPage />);
|
||||
await user.click(await screen.findByRole('button', { name: '查看消息' }));
|
||||
let finish!: (result: unknown) => void;
|
||||
api.request.mockImplementationOnce(
|
||||
() =>
|
||||
new Promise((resolve) => {
|
||||
finish = resolve;
|
||||
}),
|
||||
);
|
||||
await user.click(await screen.findByRole('button', { name: '标记已读' }));
|
||||
const closeButtons = screen.getAllByRole('button', { name: /^关闭$/ });
|
||||
await user.click(closeButtons[closeButtons.length - 1]);
|
||||
await act(async () => finish({ success: true }));
|
||||
await waitFor(() => expect(screen.queryByRole('dialog')).not.toBeInTheDocument());
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user