1
0
mirror of https://github.com/halaxa/json-machine.git synced 2025-02-21 06:32:36 +01:00
json-machine/test/JsonMachineTest/ItemsOptionsTest.php
2022-02-03 21:56:47 +01:00

70 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace JsonMachineTest;
use JsonMachine\Exception\InvalidArgumentException;
use JsonMachine\ItemsOptions;
use JsonMachine\JsonDecoder\ExtJsonDecoder;
use PHPUnit\Framework\TestCase;
/**
* @covers \JsonMachine\ItemsOptions
*/
class ItemsOptionsTest extends TestCase
{
public function testReturnsAllOptionsWithDefaultValues()
{
$options = new ItemsOptions();
$optionsArray = $options->toArray();
$this->assertEquals($this->defaultOptions(), $optionsArray);
}
public function testHasArrayAccess()
{
$options = new ItemsOptions();
$this->assertTrue(isset($options['debug']));
$this->assertFalse($options['debug']);
}
/**
* @dataProvider defaultOptionNames
*/
public function testThrowsOnInvalidOptionType($optionName)
{
$this->expectException(InvalidArgumentException::class);
new ItemsOptions([$optionName => new InvalidValue()]);
}
public function defaultOptionNames()
{
foreach ($this->defaultOptions() as $name => $ignore) {
yield [$name];
}
}
private function defaultOptions()
{
return [
'pointer' => '',
'decoder' => new ExtJsonDecoder(),
'debug' => false,
];
}
public function testThrowsOnUnknownOption()
{
$this->expectException(InvalidArgumentException::class);
new ItemsOptions(['invalid_option_name' => 'value']);
}
}
class InvalidValue
{
}