<?php

declare(strict_types=1);

namespace ShlinkioApiTest\Shlink\Rest\Action;

use Shlinkio\Shlink\TestUtils\ApiTest\ApiTestCase;

class GlobalVisitsTest extends ApiTestCase
{
    /**
     * @test
     * @dataProvider provideApiKeys
     */
    public function returnsExpectedVisitsStats(string $apiKey, int $expectedVisits): void
    {
        $resp = $this->callApiWithKey(self::METHOD_GET, '/visits', [], $apiKey);
        $payload = $this->getJsonResponsePayload($resp);

        self::assertArrayHasKey('visits', $payload);
        self::assertArrayHasKey('visitsCount', $payload['visits']);
        self::assertArrayHasKey('orphanVisitsCount', $payload['visits']);
        self::assertEquals($expectedVisits, $payload['visits']['visitsCount']);
        self::assertEquals(3, $payload['visits']['orphanVisitsCount']);
    }

    public function provideApiKeys(): iterable
    {
        yield 'admin API key' => ['valid_api_key', 7];
        yield 'domain API key' => ['domain_api_key', 0];
        yield 'author API key' => ['author_api_key', 5];
    }
}