清理素材批量选择锚点
全选或取消全选前清空上次单项选择锚点 覆盖全选清空后 Shift 点击不扩展旧范围的回归场景
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
/* @vitest-environment jsdom */
|
||||
|
||||
import { act, render, screen, waitFor } from '@testing-library/react';
|
||||
import {
|
||||
act,
|
||||
fireEvent,
|
||||
render,
|
||||
screen,
|
||||
waitFor,
|
||||
} from '@testing-library/react';
|
||||
import { useRef } from 'react';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
@@ -483,6 +489,35 @@ describe('useImageCanvasAssetLibrary', () => {
|
||||
expect(screen.getByTestId('selected-assets').textContent).toBe('');
|
||||
});
|
||||
|
||||
it('clears the range anchor when toggling all visible assets', async () => {
|
||||
loadEditorAssetLibraryMock.mockResolvedValueOnce({
|
||||
folders: [
|
||||
{
|
||||
folderId: 'project',
|
||||
label: '项目素材',
|
||||
sortOrder: 0,
|
||||
collapsed: false,
|
||||
systemDefault: true,
|
||||
},
|
||||
],
|
||||
assets: [
|
||||
createAssetSnapshot({ assetId: 'asset-a', label: '素材A' }),
|
||||
createAssetSnapshot({ assetId: 'asset-b', label: '素材B' }),
|
||||
createAssetSnapshot({ assetId: 'asset-c', label: '素材C' }),
|
||||
],
|
||||
});
|
||||
render(<AssetLibraryHarness />);
|
||||
|
||||
fireEvent.click(await screen.findByRole('button', { name: '素材A' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: 'toggle all' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: 'toggle all' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '素材C' }), {
|
||||
shiftKey: true,
|
||||
});
|
||||
|
||||
expect(screen.getByTestId('selected-assets').textContent).toBe('asset-c');
|
||||
});
|
||||
|
||||
it('submits a generated asset to showcase review', async () => {
|
||||
loadEditorAssetLibraryMock.mockResolvedValueOnce({
|
||||
folders: [
|
||||
|
||||
@@ -500,6 +500,7 @@ export function useImageCanvasAssetLibrary({
|
||||
);
|
||||
|
||||
const toggleAllAssetsSelected = useCallback((visibleAssetIds: string[]) => {
|
||||
assetSelectionAnchorRef.current = null;
|
||||
setSelectedAssetIds((currentIds) =>
|
||||
resolveVisibleAssetSelectionToggle({
|
||||
selectedAssetIds: currentIds,
|
||||
|
||||
Reference in New Issue
Block a user