import { describe, expect, it } from 'vitest' import { settleWithConcurrency } from './useMapThemeSelectionInsights' describe('settleWithConcurrency', () => { it('keeps result order and never exceeds the acquisition limit', async () => { let active = 0 let maximumActive = 0 const results = await settleWithConcurrency([0, 1, 2, 3, 4, 5], 3, async (value) => { active += 1 maximumActive = Math.max(maximumActive, active) await new Promise((resolve) => setTimeout(resolve, (5 - value) * 2)) active -= 1 return value * 10 }) expect(maximumActive).toBe(3) expect(results).toEqual([ { status: 'fulfilled', value: 0 }, { status: 'fulfilled', value: 10 }, { status: 'fulfilled', value: 20 }, { status: 'fulfilled', value: 30 }, { status: 'fulfilled', value: 40 }, { status: 'fulfilled', value: 50 }, ]) }) it('retains individual acquisition failures without stopping the queue', async () => { const results = await settleWithConcurrency(['ok', 'fail', 'later'], 2, async (value) => { if (value === 'fail') { throw new Error('provider unavailable') } return value.toUpperCase() }) expect(results[0]).toEqual({ status: 'fulfilled', value: 'OK' }) expect(results[1].status).toBe('rejected') expect(results[2]).toEqual({ status: 'fulfilled', value: 'LATER' }) }) })