mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-16 08:25:14 +02:00
45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
addTouchedSlSource,
|
|
createTouchedSlSources,
|
|
deleteTouchedSlSource,
|
|
hasTouchedSlSource,
|
|
listTouchedSlSources,
|
|
touchedSlSourceCount,
|
|
touchedSlSourceNamesForConnection,
|
|
} from '../../../src/context/tools/touched-sl-sources.js';
|
|
|
|
describe('target-aware touched SL source helpers', () => {
|
|
it('deduplicates by connectionId and sourceName while preserving target identity', () => {
|
|
const touched = createTouchedSlSources();
|
|
|
|
addTouchedSlSource(touched, 'warehouse-a', 'orders');
|
|
addTouchedSlSource(touched, 'warehouse-a', 'orders');
|
|
addTouchedSlSource(touched, 'warehouse-b', 'orders');
|
|
|
|
expect(listTouchedSlSources(touched)).toEqual([
|
|
{ connectionId: 'warehouse-a', sourceName: 'orders' },
|
|
{ connectionId: 'warehouse-b', sourceName: 'orders' },
|
|
]);
|
|
expect(touchedSlSourceCount(touched)).toBe(2);
|
|
expect(hasTouchedSlSource(touched, 'warehouse-a', 'orders')).toBe(true);
|
|
expect(hasTouchedSlSource(touched, 'warehouse-b', 'orders')).toBe(true);
|
|
});
|
|
|
|
it('lists touched names for one connection and deletes only that connection/source pair', () => {
|
|
const touched = createTouchedSlSources([
|
|
{ connectionId: 'warehouse-a', sourceName: 'orders' },
|
|
{ connectionId: 'warehouse-a', sourceName: 'customers' },
|
|
{ connectionId: 'warehouse-b', sourceName: 'orders' },
|
|
]);
|
|
|
|
deleteTouchedSlSource(touched, 'warehouse-a', 'orders');
|
|
|
|
expect(touchedSlSourceNamesForConnection(touched, 'warehouse-a')).toEqual(['customers']);
|
|
expect(touchedSlSourceNamesForConnection(touched, 'warehouse-b')).toEqual(['orders']);
|
|
expect(listTouchedSlSources(touched)).toEqual([
|
|
{ connectionId: 'warehouse-a', sourceName: 'customers' },
|
|
{ connectionId: 'warehouse-b', sourceName: 'orders' },
|
|
]);
|
|
});
|
|
});
|