<?php

namespace Aws\Test\ClientSideMonitoring;

use Aws\ClientSideMonitoring\Configuration;
use Yoast\PHPUnitPolyfills\TestCases\TestCase;
use Psr\Log\InvalidArgumentException;


/**
 * @covers \Aws\ClientSideMonitoring\Configuration
 */
class ConfigurationTest extends TestCase
{
    public function testGetsCorrectValues()
    {
        $config = new Configuration(true, 'FooHost', 888, 'FooApp');
        $this->assertTrue($config->isEnabled());
        $this->assertSame('FooHost', $config->getHost());
        $this->assertSame(888, $config->getPort());
        $this->assertSame('FooApp', $config->getClientId());
    }

    public function testToArray()
    {
        $config = new Configuration(true, 'FooHost', 888, 'FooApp');
        $expected = [
            'enabled' => true,
            'host' => 'FooHost',
            'port' => 888,
            'client_id' => 'FooApp'
        ];
        $this->assertEquals($expected, $config->toArray());
    }

    public function testHandlesInvalidPort()
    {
        $this->expectException(\InvalidArgumentException::class);
        new Configuration(true, 'invalidport', 'FooApp');
    }

    public function testHandlesInvalidEnabled()
    {
        $config = new Configuration('invalidvalue', 'FooHost', 123, 'FooApp');
        $this->assertFalse($config->isEnabled());
    }
}