feat: unify mobile vehicle search
This commit is contained in:
@@ -237,7 +237,7 @@ test('shows deduplicated Semi vehicle candidates and opens the selected VIN', as
|
||||
workspace.remove();
|
||||
});
|
||||
|
||||
test('defaults to a compact mobile vehicle directory and keeps eight recent vehicles', async () => {
|
||||
test('keeps the mobile vehicle directory primary and applies search from a Semi bottom sheet', async () => {
|
||||
layout.mobile = true;
|
||||
const items = Array.from({ length: 10 }, (_, index) => ({
|
||||
vin: `LTEST${String(index).padStart(12, '0')}`,
|
||||
@@ -265,24 +265,31 @@ test('defaults to a compact mobile vehicle directory and keeps eight recent vehi
|
||||
expect(screen.getAllByRole('button', { name: /打开 .* 车辆档案/ })).toHaveLength(8);
|
||||
expect(screen.getAllByText(/GB\/T 32960|JT\/T 808/).length).toBeGreaterThan(0);
|
||||
expect(view.container.querySelector('.v2-vehicle-directory-table')).not.toBeInTheDocument();
|
||||
expect(view.container.querySelector('.v2-vehicle-query-panel')).toHaveClass('is-mobile-collapsed');
|
||||
expect(view.container.querySelector('.v2-vehicle-query-panel')).not.toBeInTheDocument();
|
||||
expect(screen.queryByLabelText('查车操作')).not.toBeInTheDocument();
|
||||
const toggle = screen.getByRole('button', { name: '修改车辆筛选:10 辆授权车辆' });
|
||||
const toggle = screen.getByRole('button', { name: '修改车辆范围:10 辆授权车辆' });
|
||||
expect(toggle).toHaveAttribute('aria-expanded', 'false');
|
||||
fireEvent.click(toggle);
|
||||
expect(view.container.querySelector('.v2-vehicle-query-panel')).not.toHaveClass('is-mobile-collapsed');
|
||||
const input = screen.getByRole('textbox', { name: '搜索车辆' });
|
||||
expect(input).toBeVisible();
|
||||
expect(view.container.querySelector('.v2-vehicle-search-options')).not.toBeInTheDocument();
|
||||
fireEvent.focus(input);
|
||||
expect(view.container.querySelector('.v2-vehicle-search-options')).not.toBeInTheDocument();
|
||||
expect(document.querySelector('.v2-vehicle-mobile-filter-sidesheet')).toBeInTheDocument();
|
||||
expect(screen.getAllByRole('button', { name: /打开 .* 车辆档案/ })).toHaveLength(8);
|
||||
fireEvent.change(input, { target: { value: items[0].plate } });
|
||||
await waitFor(() => expect(view.container.querySelector('.v2-vehicle-search-options')).toBeInTheDocument());
|
||||
expect(view.container.querySelector('.v2-vehicle-search-page')).toHaveClass('has-candidates');
|
||||
fireEvent.click(screen.getByRole('button', { name: /查询车辆/ }));
|
||||
expect(view.container.querySelector('.v2-vehicle-search-options')).not.toBeInTheDocument();
|
||||
expect(view.container.querySelector('.v2-vehicle-search-page')).not.toHaveClass('has-candidates');
|
||||
expect(await screen.findByRole('listbox')).toHaveAttribute('id', 'v2-vehicle-mobile-search-options');
|
||||
expect(screen.getAllByRole('button', { name: /打开 .* 车辆档案/ })).toHaveLength(8);
|
||||
fireEvent.click(screen.getByRole('button', { name: '应用搜索' }));
|
||||
await waitFor(() => expect(screen.getByRole('button', { name: `修改车辆范围:${items[0].plate} · 10 辆匹配` })).toHaveAttribute('aria-expanded', 'false'));
|
||||
expect(screen.getByRole('heading', { name: '匹配车辆', level: 5 })).toBeInTheDocument();
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: `修改车辆范围:${items[0].plate} · 10 辆匹配` }));
|
||||
fireEvent.change(screen.getByRole('textbox', { name: '搜索车辆' }), { target: { value: items[1].plate } });
|
||||
fireEvent.click(screen.getByRole('button', { name: '关闭车辆搜索' }));
|
||||
await waitFor(() => expect(screen.getByRole('button', { name: `修改车辆范围:${items[0].plate} · 10 辆匹配` })).toBeInTheDocument());
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: `修改车辆范围:${items[0].plate} · 10 辆匹配` }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '重置范围' }));
|
||||
await waitFor(() => expect(screen.getByRole('button', { name: '修改车辆范围:10 辆授权车辆' })).toBeInTheDocument());
|
||||
expect(screen.getByRole('heading', { name: '授权车辆', level: 5 })).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('keeps a partial vehicle query in the directory instead of navigating to an invalid detail route', async () => {
|
||||
|
||||
Reference in New Issue
Block a user