import { cleanup, render, screen } from '@testing-library/react' import { afterEach, describe, expect, it, vi } from 'vitest' import { ProviderPanel } from './ProviderPanel' import type { ProviderCapability } from '../../types' function props(overschrijf: Partial[0]> = {}) { return { selectedProjectId: 'p-1', providers: [] as ProviderCapability[], loadingCapabilities: false, capabilitiesError: null, onRefresh: vi.fn(), onOpenSources: vi.fn(), onOpenStatus: vi.fn(), onOpenMap: vi.fn(), ...overschrijf, } } describe('ProviderPanel', () => { afterEach(() => cleanup()) it('blijft overeind bij een antwoord dat zijn eigen contract schendt', () => { // Het type zegt dat providers altijd meekomt. Dit paneel gebruikte die // lijst op drie plekken en had er op één een guard; nu wordt hij aan de // kop genormaliseerd. Een type is een belofte van de compiler, niet van // het netwerk. const zonder = props({ providers: undefined as unknown as ProviderCapability[] }) expect(() => render()).not.toThrow() }) it('toont een lege toestand zonder koppelingen', () => { render() expect(screen.getByText(/geen databronnen gemeld/i)).toBeTruthy() }) it('meldt het wanneer de status niet opgehaald kon worden', () => { render() expect(screen.getByText(/bronservice niet bereikbaar/i)).toBeTruthy() }) })