. */ namespace App\Tests\State\Mcp; use ApiPlatform\Metadata\Get; use App\Mcp\DTO\ListInfoProvidersInput; use App\Services\InfoProviderSystem\DTOs\ProviderInfoDTO; use App\Services\InfoProviderSystem\Providers\InfoProviderInterface; use App\Services\InfoProviderSystem\Providers\ProviderCapabilities; use App\Services\InfoProviderSystem\ProviderRegistry; use App\State\Mcp\ListInfoProvidersProcessor; use PHPUnit\Framework\TestCase; final class ListInfoProvidersProcessorTest extends TestCase { public function testOnlyActiveProvidersAreListed(): void { $active = $this->createMock(InfoProviderInterface::class); $active->method('isActive')->willReturn(true); $active->method('getProviderInfo')->willReturn(new ProviderInfoDTO( key: 'active_provider', name: 'Active Provider', description: 'A provider that is active', url: 'https://example.com', capabilities: [ProviderCapabilities::BASIC, ProviderCapabilities::PRICE], )); $disabled = $this->createMock(InfoProviderInterface::class); $disabled->method('isActive')->willReturn(false); $disabled->method('getProviderInfo')->willReturn(new ProviderInfoDTO(key: 'disabled_provider', name: 'Disabled Provider')); $registry = new ProviderRegistry([$active, $disabled]); $processor = new ListInfoProvidersProcessor($registry); $result = $processor->process(new ListInfoProvidersInput(), new Get()); $this->assertCount(1, $result); $this->assertInstanceOf(ProviderInfoDTO::class, $result[0]); $this->assertSame('active_provider', $result[0]->key); $this->assertSame('Active Provider', $result[0]->name); $this->assertSame('A provider that is active', $result[0]->description); $this->assertSame('https://example.com', $result[0]->url); $this->assertSame([ProviderCapabilities::BASIC, ProviderCapabilities::PRICE], $result[0]->capabilities); } }