fix: bound formatter memory and improve operations workflows
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { fireEvent, render, screen, waitFor, within } from '@testing-library/react';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { AdminAnalyticsPage } from './AdminAnalyticsPage';
|
||||
|
||||
const { api } = vi.hoisted(() => ({
|
||||
api: { getSignatureQuality: vi.fn(), getSignatureRetirementHeatmap: vi.fn(), getUnreportedSignatures: vi.fn() },
|
||||
}));
|
||||
vi.mock('@/api/adminApi', () => ({ adminApi: api }));
|
||||
|
||||
describe('independent analytics tabs', () => {
|
||||
beforeEach(() => {
|
||||
vi.resetAllMocks();
|
||||
api.getSignatureQuality.mockImplementation(async (query) => ({ ...query, total: 0, items: [] }));
|
||||
api.getUnreportedSignatures.mockImplementation(async (query) => ({ ...query, total: 0, items: [] }));
|
||||
api.getSignatureRetirementHeatmap.mockResolvedValue({ items: [], dimensions: [] });
|
||||
});
|
||||
it('loads only the visited tab and preserves independent dates when switching back', async () => {
|
||||
render(<AdminAnalyticsPage />);
|
||||
await waitFor(() =>
|
||||
expect(api.getSignatureQuality).toHaveBeenCalledWith(expect.objectContaining({ pageSize: 25 })),
|
||||
);
|
||||
expect(api.getSignatureRetirementHeatmap).not.toHaveBeenCalled();
|
||||
const quality = screen.getByRole('region', { name: '签名通道发送质量' });
|
||||
fireEvent.change(within(quality).getByLabelText('统计日期'), { target: { value: '2026-08-20' } });
|
||||
fireEvent.click(within(quality).getByRole('button', { name: '查询统计' }));
|
||||
await waitFor(() =>
|
||||
expect(api.getSignatureQuality).toHaveBeenLastCalledWith(expect.objectContaining({ date: '2026-08-20' })),
|
||||
);
|
||||
fireEvent.click(screen.getByRole('tab', { name: '未报备签名' }));
|
||||
await waitFor(() => expect(api.getUnreportedSignatures).toHaveBeenCalledTimes(1));
|
||||
const unreported = screen.getByRole('region', { name: '未报备签名' });
|
||||
fireEvent.change(within(unreported).getByLabelText('统计日期'), { target: { value: '2026-08-25' } });
|
||||
fireEvent.click(screen.getByRole('tab', { name: '签名通道发送质量' }));
|
||||
expect(within(quality).getByLabelText('统计日期')).toHaveValue('2026-08-20');
|
||||
fireEvent.click(screen.getByRole('tab', { name: '未报备签名' }));
|
||||
expect(within(unreported).getByLabelText('统计日期')).toHaveValue('2026-08-25');
|
||||
expect(api.getSignatureRetirementHeatmap).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user