mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-19 07:36:17 +00:00
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { updateDownloadSelection } from './downloadSelection';
|
|
|
|
const orderedIds = ['a', 'b', 'c', 'd'];
|
|
|
|
describe('download selection', () => {
|
|
it('collapses select-all to the clicked row', () => {
|
|
const result = updateDownloadSelection({
|
|
orderedIds,
|
|
selectedIds: new Set(orderedIds),
|
|
lastSelectedId: 'd',
|
|
targetId: 'b',
|
|
extendRange: false,
|
|
toggle: false,
|
|
});
|
|
|
|
expect([...result.selectedIds]).toEqual(['b']);
|
|
expect(result.lastSelectedId).toBe('b');
|
|
});
|
|
|
|
it('toggles a row without losing the rest of the selection', () => {
|
|
const result = updateDownloadSelection({
|
|
orderedIds,
|
|
selectedIds: new Set(['a', 'c']),
|
|
lastSelectedId: 'a',
|
|
targetId: 'c',
|
|
extendRange: false,
|
|
toggle: true,
|
|
});
|
|
|
|
expect([...result.selectedIds]).toEqual(['a']);
|
|
});
|
|
|
|
it('extends from the existing anchor for a range selection', () => {
|
|
const result = updateDownloadSelection({
|
|
orderedIds,
|
|
selectedIds: new Set(['a']),
|
|
lastSelectedId: 'a',
|
|
targetId: 'c',
|
|
extendRange: true,
|
|
toggle: false,
|
|
});
|
|
|
|
expect([...result.selectedIds]).toEqual(['a', 'b', 'c']);
|
|
expect(result.lastSelectedId).toBe('a');
|
|
});
|
|
});
|