<?php

namespace Tests\Support;

use App\Services\Graph\GraphClientInterface;
use App\Services\Graph\GraphResponse;
use RuntimeException;

final class FailHardGraphClient implements GraphClientInterface
{
    private function fail(string $method): never
    {
        throw new RuntimeException("GraphClientInterface invoked during UI render/guard test: {$method}");
    }

    public function listPolicies(string $policyType, array $options = []): GraphResponse
    {
        $this->fail(__METHOD__);
    }

    public function getPolicy(string $policyType, string $policyId, array $options = []): GraphResponse
    {
        $this->fail(__METHOD__);
    }

    public function getOrganization(array $options = []): GraphResponse
    {
        $this->fail(__METHOD__);
    }

    public function applyPolicy(string $policyType, string $policyId, array $payload, array $options = []): GraphResponse
    {
        $this->fail(__METHOD__);
    }

    public function getServicePrincipalPermissions(array $options = []): GraphResponse
    {
        $this->fail(__METHOD__);
    }

    public function request(string $method, string $path, array $options = []): GraphResponse
    {
        $this->fail(__METHOD__);
    }
}
