fix: keep mobile filter resets intentional
This commit is contained in:
@@ -212,6 +212,8 @@ test('renders mobile access vehicles as selectable Semi cards', async () => {
|
||||
expect(within(filterDialog).getByRole('combobox', { name: '接入状态' })).toBeInTheDocument();
|
||||
expect(within(filterDialog).getByRole('combobox', { name: '真实协议' })).toBeInTheDocument();
|
||||
expect(within(filterDialog).getByRole('combobox', { name: '车辆品牌' })).toBeInTheDocument();
|
||||
fireEvent.click(within(filterDialog).getByRole('button', { name: '重置条件' }));
|
||||
expect(screen.getByRole('dialog', { name: '接入车辆筛选' })).toBeInTheDocument();
|
||||
fireEvent.click(within(filterDialog).getByRole('combobox', { name: '接入状态' }));
|
||||
const attentionOption = (await screen.findAllByText('需关注')).find((element) => element.classList.contains('semi-select-option-text'));
|
||||
expect(attentionOption).toBeInTheDocument();
|
||||
|
||||
@@ -358,6 +358,7 @@ export default function AccessPage() {
|
||||
const syncURL = (filters: Filters) => { const next = new URLSearchParams(); Object.entries(filters).forEach(([key, value]) => { if (value) next.set(key, value); }); setSearchParams(next, { replace: true }); };
|
||||
const apply = (next: Filters) => { setDraft(next); setCriteria(next); setOffset(0); setSelectedVIN(''); syncURL(next); };
|
||||
const applyDraft = () => { apply(draft); setFiltersCollapsed(true); };
|
||||
const resetMobileDraft = () => setDraft(EMPTY_FILTERS);
|
||||
const resetFilters = () => { apply(EMPTY_FILTERS); setFiltersCollapsed(true); };
|
||||
const submit = (event: FormEvent) => { event.preventDefault(); applyDraft(); };
|
||||
const page = Math.floor(offset / limit) + 1; const totalPages = Math.max(1, Math.ceil((vehiclesQuery.data?.total ?? 0) / limit)); const summary = summaryQuery.data;
|
||||
@@ -424,7 +425,7 @@ export default function AccessPage() {
|
||||
title="筛选接入车辆"
|
||||
description="车辆、接入状态、真实协议与品牌"
|
||||
onCancel={() => setFiltersCollapsed(true)}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetFilters }}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetMobileDraft }}
|
||||
primaryAction={{ label: '应用并查询', onClick: applyDraft }}
|
||||
>
|
||||
<form className="v2-access-mobile-filter-form" onSubmit={submit}>
|
||||
|
||||
@@ -326,6 +326,8 @@ test('uses one focused Semi bottom SideSheet for the complete mobile event filte
|
||||
expect(within(dialog).getByRole('combobox', { name: '协议' })).toBeInTheDocument();
|
||||
expect(within(dialog).getByLabelText('告警起始时间')).toBeInTheDocument();
|
||||
expect(within(dialog).getByLabelText('告警结束时间')).toBeInTheDocument();
|
||||
fireEvent.click(within(dialog).getByRole('button', { name: '重置条件' }));
|
||||
expect(screen.getByRole('dialog', { name: '告警事件筛选' })).toBeInTheDocument();
|
||||
fireEvent.click(within(dialog).getByRole('combobox', { name: '协议' }));
|
||||
fireEvent.click(await screen.findByText('JT808'));
|
||||
fireEvent.click(within(dialog).getByRole('button', { name: '应用并查询' }));
|
||||
|
||||
@@ -200,6 +200,7 @@ function EventWorkspace({ filters, draft, setDraft, setFilters, rules, unread, e
|
||||
setFiltersCollapsed(true);
|
||||
};
|
||||
const submit = (e: FormEvent) => { e.preventDefault(); applyDraft(); };
|
||||
const resetMobileDraft = () => setDraft(EMPTY_FILTERS);
|
||||
const resetFilters = () => {
|
||||
setDraft(EMPTY_FILTERS);
|
||||
setFilters(EMPTY_FILTERS);
|
||||
@@ -256,7 +257,7 @@ function EventWorkspace({ filters, draft, setDraft, setFilters, rules, unread, e
|
||||
title="筛选告警事件"
|
||||
description="车辆、状态、规则与时间范围"
|
||||
onCancel={() => setFiltersCollapsed(true)}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetFilters }}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetMobileDraft }}
|
||||
primaryAction={{ label: '应用并查询', onClick: applyDraft }}
|
||||
>
|
||||
<form className="v2-alert-mobile-filter-form" onSubmit={submit}>
|
||||
|
||||
@@ -219,6 +219,8 @@ test('uses one focused Semi bottom SideSheet for the complete mobile history que
|
||||
expect(within(dialog).getByLabelText('结束时间')).toBeInTheDocument();
|
||||
expect(within(dialog).getByRole('combobox', { name: '数据类型' })).toBeInTheDocument();
|
||||
expect(within(dialog).getByRole('combobox', { name: '数据来源' })).toBeInTheDocument();
|
||||
fireEvent.click(within(dialog).getByRole('button', { name: '重置条件' }));
|
||||
expect(screen.getByRole('dialog', { name: '历史查询范围' })).toBeInTheDocument();
|
||||
fireEvent.change(within(dialog).getByPlaceholderText('车牌 / VIN,多台用逗号分隔'), { target: { value: 'MOBILEVIN' } });
|
||||
fireEvent.click(within(dialog).getByRole('button', { name: '应用并查询' }));
|
||||
|
||||
|
||||
@@ -359,6 +359,7 @@ export default function HistoryPage() {
|
||||
setSearchParams(preserveMonitorReturn(url, monitorReturn), { replace: true });
|
||||
};
|
||||
const submit = (event: FormEvent) => { event.preventDefault(); applyDraft(); };
|
||||
const resetDraft = () => setDraft({ keywords: '', ...currentHistoryWindow(), category: 'location', protocol: '' });
|
||||
const reset = () => { const next = { keywords: '', ...currentHistoryWindow(), category: 'location', protocol: '' }; setDraft(next); setCriteria(next); setOffset(0); setFiltersCollapsed(true); setSearchParams(preserveMonitorReturn(new URLSearchParams(), monitorReturn), { replace: true }); };
|
||||
const toggleMetric = (key: string) => setVisibleByCategory((current) => {
|
||||
const baseline = current[criteria.category] ?? allMetrics.filter((metric) => metric.defaultVisible).map((metric) => metric.key);
|
||||
@@ -439,7 +440,7 @@ export default function HistoryPage() {
|
||||
title="筛选历史数据"
|
||||
description="车辆、时间、数据类型与协议来源"
|
||||
onCancel={() => setFiltersCollapsed(true)}
|
||||
secondaryAction={{ label: '重置条件', onClick: reset }}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetDraft }}
|
||||
primaryAction={{ label: '应用并查询', disabled: !parseHistoryKeywords(draft.keywords).length, onClick: applyDraft }}
|
||||
>
|
||||
<form className="v2-history-mobile-filter-form" onSubmit={submit}>
|
||||
|
||||
@@ -278,6 +278,9 @@ test('applies mobile customer filters explicitly and discards unconfirmed draft
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '修改账号范围:全部状态 · 西部' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '重置条件' }));
|
||||
expect(screen.getByRole('dialog', { name: '客户账号筛选' })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: '关闭账号范围:全部状态 · 西部' })).toHaveAttribute('aria-expanded', 'true');
|
||||
fireEvent.click(screen.getByRole('button', { name: '应用筛选' }));
|
||||
await waitFor(() => expect(screen.getByRole('button', { name: /选择客户 华东客户/ })).toBeInTheDocument());
|
||||
expect(screen.getByRole('button', { name: /选择客户 西部客户/ })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: '修改账号范围:全部状态' })).toBeInTheDocument();
|
||||
|
||||
@@ -358,12 +358,9 @@ export default function UsersPage() {
|
||||
setCustomerStatus(draftCustomerStatus);
|
||||
setFiltersCollapsed(true);
|
||||
};
|
||||
const resetMobileFilters = () => {
|
||||
const resetMobileDraft = () => {
|
||||
setDraftCustomerKeyword('');
|
||||
setDraftCustomerStatus('all');
|
||||
setCustomerKeyword('');
|
||||
setCustomerStatus('all');
|
||||
setFiltersCollapsed(true);
|
||||
};
|
||||
const submitMobileFilters = (event: FormEvent) => {
|
||||
event.preventDefault();
|
||||
@@ -398,7 +395,7 @@ export default function UsersPage() {
|
||||
title="筛选客户账号"
|
||||
description="按账号信息与权限状态缩小客户范围"
|
||||
onCancel={closeMobileFilters}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetMobileFilters }}
|
||||
secondaryAction={{ label: '重置条件', onClick: resetMobileDraft }}
|
||||
primaryAction={{ label: '应用筛选', onClick: applyMobileFilters }}
|
||||
>
|
||||
<form className="v2-user-mobile-filter-form" onSubmit={submitMobileFilters}>
|
||||
|
||||
@@ -288,6 +288,9 @@ test('keeps the mobile vehicle directory primary and applies search from a Semi
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: `修改车辆范围:${items[0].plate} · 10 辆匹配` }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '重置范围' }));
|
||||
expect(screen.getByRole('dialog', { name: '车辆搜索' })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: `关闭车辆范围:${items[0].plate} · 10 辆匹配` })).toHaveAttribute('aria-expanded', 'true');
|
||||
fireEvent.click(screen.getByRole('button', { name: '应用搜索' }));
|
||||
await waitFor(() => expect(screen.getByRole('button', { name: '修改车辆范围:10 辆授权车辆' })).toBeInTheDocument());
|
||||
expect(screen.getByRole('heading', { name: '授权车辆', level: 5 })).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -135,12 +135,9 @@ export default function VehicleSearchWorkspace() {
|
||||
setCandidatesOpen(false);
|
||||
setFiltersCollapsed(true);
|
||||
};
|
||||
const resetMobileFilters = () => {
|
||||
const resetMobileDraft = () => {
|
||||
setDraftKeyword('');
|
||||
setKeyword('');
|
||||
setPage(1);
|
||||
setCandidatesOpen(false);
|
||||
setFiltersCollapsed(true);
|
||||
};
|
||||
const submit = (event: FormEvent) => {
|
||||
event.preventDefault();
|
||||
@@ -183,7 +180,7 @@ export default function VehicleSearchWorkspace() {
|
||||
title="查找车辆"
|
||||
description="车牌优先,支持 VIN 与终端手机号"
|
||||
onCancel={closeMobileFilters}
|
||||
secondaryAction={{ label: '重置范围', onClick: resetMobileFilters }}
|
||||
secondaryAction={{ label: '重置范围', onClick: resetMobileDraft }}
|
||||
primaryAction={{ label: '应用搜索', onClick: applyMobileFilters }}
|
||||
>
|
||||
<form className="v2-vehicle-mobile-filter-form" onSubmit={submitMobileFilters}>
|
||||
|
||||
@@ -28,6 +28,7 @@ test('renders one shared Semi filter sheet with consistent title, section and ac
|
||||
expect(screen.getByText('按车辆和状态缩小范围')).toBeInTheDocument();
|
||||
expect(screen.getByRole('region', { name: '车辆条件' })).toHaveTextContent('支持车牌或 VIN');
|
||||
fireEvent.click(screen.getByRole('button', { name: '重置条件' }));
|
||||
expect(screen.getByRole('dialog', { name: '测试筛选' })).toBeInTheDocument();
|
||||
fireEvent.click(screen.getByRole('button', { name: '应用并查询' }));
|
||||
expect(onReset).toHaveBeenCalledTimes(1);
|
||||
expect(onApply).toHaveBeenCalledTimes(1);
|
||||
|
||||
Reference in New Issue
Block a user