diff options
Diffstat (limited to 'tests/app/Utils/dotNotationUtilTest.php')
| -rw-r--r-- | tests/app/Utils/dotNotationUtilTest.php | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/app/Utils/dotNotationUtilTest.php b/tests/app/Utils/dotNotationUtilTest.php new file mode 100644 index 000000000..a04ddba4f --- /dev/null +++ b/tests/app/Utils/dotNotationUtilTest.php @@ -0,0 +1,44 @@ +<?php +declare(strict_types=1); + +class dotNotationUtilTest extends PHPUnit\Framework\TestCase { + + /** + * @return Traversable<array{array<string,mixed>,string,string}> + */ + public function provideJsonDots(): Traversable { + $json = <<<json + { + "hello": "world", + "deeper": { + "hello": "again" + }, + "items": [ + { + "meta": {"title": "first"} + }, + { + "meta": {"title": "second"} + } + ] + } + json; + $array = json_decode($json, true); + + yield [$array, 'hello', 'world']; + yield [$array, 'deeper.hello', 'again']; + yield [$array, 'items.0.meta.title', 'first']; + yield [$array, 'items[0].meta.title', 'first']; + yield [$array, 'items.1.meta.title', 'second']; + yield [$array, 'items[1].meta.title', 'second']; + } + + /** + * @dataProvider provideJsonDots + * @param array<string,mixed> $array + */ + public function testJsonDots(array $array, string $key, string $expected): void { + $value = FreshRSS_dotNotation_Util::get($array, $key); + self::assertEquals($expected, $value); + } +} |
