diff --git a/src/Format/JsonEncodeOptions.php b/src/Format/JsonEncodeOptions.php index 7d2710e5..5a495160 100644 --- a/src/Format/JsonEncodeOptions.php +++ b/src/Format/JsonEncodeOptions.php @@ -25,6 +25,11 @@ private function __construct(private int $value) { } + public static function default(): self + { + return new self(0); + } + /** * @throws Exception\InvalidJsonEncodeOptions */ diff --git a/src/SchemaNormalizer.php b/src/SchemaNormalizer.php index a9ab71f7..f60b5e89 100644 --- a/src/SchemaNormalizer.php +++ b/src/SchemaNormalizer.php @@ -61,11 +61,14 @@ public function normalize(Json $json): Json ); } - $normalized = Json::fromString(\json_encode($this->normalizeData( - $json->decoded(), - $schema, - Pointer\JsonPointer::document(), - ))); + $normalized = Json::fromString(\json_encode( + $this->normalizeData( + $json->decoded(), + $schema, + Pointer\JsonPointer::document(), + ), + Format\JsonEncodeOptions::default()->toInt(), + )); $resultAfterNormalization = $this->schemaValidator->validate( $normalized, diff --git a/src/Vendor/Composer/BinNormalizer.php b/src/Vendor/Composer/BinNormalizer.php index 82d259fe..0d41d049 100644 --- a/src/Vendor/Composer/BinNormalizer.php +++ b/src/Vendor/Composer/BinNormalizer.php @@ -14,6 +14,7 @@ namespace Ergebnis\Json\Normalizer\Vendor\Composer; use Ergebnis\Json\Json; +use Ergebnis\Json\Normalizer\Format; use Ergebnis\Json\Normalizer\Normalizer; final class BinNormalizer implements Normalizer @@ -37,7 +38,10 @@ public function normalize(Json $json): Json $decoded->bin = $bin; /** @var string $encoded */ - $encoded = \json_encode($decoded); + $encoded = \json_encode( + $decoded, + Format\JsonEncodeOptions::default()->toInt(), + ); return Json::fromString($encoded); } diff --git a/src/Vendor/Composer/PackageHashNormalizer.php b/src/Vendor/Composer/PackageHashNormalizer.php index dca8f502..fa39e02f 100644 --- a/src/Vendor/Composer/PackageHashNormalizer.php +++ b/src/Vendor/Composer/PackageHashNormalizer.php @@ -14,6 +14,7 @@ namespace Ergebnis\Json\Normalizer\Vendor\Composer; use Ergebnis\Json\Json; +use Ergebnis\Json\Normalizer\Format; use Ergebnis\Json\Normalizer\Normalizer; final class PackageHashNormalizer implements Normalizer @@ -60,7 +61,10 @@ public function normalize(Json $json): Json } /** @var string $encoded */ - $encoded = \json_encode($decoded); + $encoded = \json_encode( + $decoded, + Format\JsonEncodeOptions::default()->toInt(), + ); return Json::fromString($encoded); } diff --git a/src/Vendor/Composer/VersionConstraintNormalizer.php b/src/Vendor/Composer/VersionConstraintNormalizer.php index 141efabc..2eb24e0a 100644 --- a/src/Vendor/Composer/VersionConstraintNormalizer.php +++ b/src/Vendor/Composer/VersionConstraintNormalizer.php @@ -14,6 +14,7 @@ namespace Ergebnis\Json\Normalizer\Vendor\Composer; use Ergebnis\Json\Json; +use Ergebnis\Json\Normalizer\Format; use Ergebnis\Json\Normalizer\Normalizer; final class VersionConstraintNormalizer implements Normalizer @@ -70,7 +71,10 @@ public function normalize(Json $json): Json } /** @var string $encoded */ - $encoded = \json_encode($decoded); + $encoded = \json_encode( + $decoded, + Format\JsonEncodeOptions::default()->toInt(), + ); return Json::fromString($encoded); } diff --git a/test/Unit/Format/JsonEncodeOptionsTest.php b/test/Unit/Format/JsonEncodeOptionsTest.php index 87419fa6..450cedfa 100644 --- a/test/Unit/Format/JsonEncodeOptionsTest.php +++ b/test/Unit/Format/JsonEncodeOptionsTest.php @@ -30,6 +30,15 @@ final class JsonEncodeOptionsTest extends Framework\TestCase { use Test\Util\Helper; + public function testDefaultReturnsJsonEncodeOptions(): void + { + $jsonEncodeOptions = Format\JsonEncodeOptions::default(); + + $expected = 0; + + self::assertSame($expected, $jsonEncodeOptions->toInt()); + } + /** * @dataProvider provideInvalidValue */ diff --git a/test/Unit/SchemaNormalizerTest.php b/test/Unit/SchemaNormalizerTest.php index 59e82499..d580930a 100644 --- a/test/Unit/SchemaNormalizerTest.php +++ b/test/Unit/SchemaNormalizerTest.php @@ -36,6 +36,7 @@ * @uses \Ergebnis\Json\Normalizer\Exception\SchemaUriCouldNotBeResolved * @uses \Ergebnis\Json\Normalizer\Exception\SchemaUriReferencesDocumentWithInvalidMediaType * @uses \Ergebnis\Json\Normalizer\Exception\SchemaUriReferencesInvalidJsonDocument + * @uses \Ergebnis\Json\Normalizer\Format\JsonEncodeOptions */ final class SchemaNormalizerTest extends AbstractNormalizerTestCase { diff --git a/test/Unit/Vendor/Composer/BinNormalizerTest.php b/test/Unit/Vendor/Composer/BinNormalizerTest.php index dead9f3c..5a0850e2 100644 --- a/test/Unit/Vendor/Composer/BinNormalizerTest.php +++ b/test/Unit/Vendor/Composer/BinNormalizerTest.php @@ -20,6 +20,8 @@ * @internal * * @covers \Ergebnis\Json\Normalizer\Vendor\Composer\BinNormalizer + * + * @uses \Ergebnis\Json\Normalizer\Format\JsonEncodeOptions */ final class BinNormalizerTest extends AbstractComposerTestCase { @@ -81,8 +83,9 @@ public function testNormalizeSortsBinIfPropertyExistsAsArray(): void JSON ); - $expected = \json_encode(\json_decode( - <<<'JSON' + $expected = \json_encode( + \json_decode( + <<<'JSON' { "bin": [ "another-script.php", @@ -94,7 +97,9 @@ public function testNormalizeSortsBinIfPropertyExistsAsArray(): void } } JSON - )); + ), + 0, + ); $normalizer = new Vendor\Composer\BinNormalizer(); diff --git a/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php b/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php index 68425b5f..9cff1f7a 100644 --- a/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php +++ b/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php @@ -23,6 +23,7 @@ * @covers \Ergebnis\Json\Normalizer\Vendor\Composer\ComposerJsonNormalizer * * @uses \Ergebnis\Json\Normalizer\ChainNormalizer + * @uses \Ergebnis\Json\Normalizer\Format\JsonEncodeOptions * @uses \Ergebnis\Json\Normalizer\SchemaNormalizer * @uses \Ergebnis\Json\Normalizer\Vendor\Composer\BinNormalizer * @uses \Ergebnis\Json\Normalizer\Vendor\Composer\PackageHashNormalizer diff --git a/test/Unit/Vendor/Composer/PackageHashNormalizerTest.php b/test/Unit/Vendor/Composer/PackageHashNormalizerTest.php index 237f3d79..f49eede1 100644 --- a/test/Unit/Vendor/Composer/PackageHashNormalizerTest.php +++ b/test/Unit/Vendor/Composer/PackageHashNormalizerTest.php @@ -14,12 +14,15 @@ namespace Ergebnis\Json\Normalizer\Test\Unit\Vendor\Composer; use Ergebnis\Json\Json; +use Ergebnis\Json\Normalizer\Format; use Ergebnis\Json\Normalizer\Vendor; /** * @internal * * @covers \Ergebnis\Json\Normalizer\Vendor\Composer\PackageHashNormalizer + * + * @uses \Ergebnis\Json\Normalizer\Format\JsonEncodeOptions */ final class PackageHashNormalizerTest extends AbstractComposerTestCase { @@ -56,7 +59,10 @@ public function testNormalizeIgnoresEmptyPackageHash(string $property): void JSON ); - $expected = \json_encode(\json_decode($json->encoded())); + $expected = \json_encode( + \json_decode($json->encoded()), + 0, + ); $normalizer = new Vendor\Composer\PackageHashNormalizer(); @@ -91,8 +97,9 @@ public function testNormalizeSortsPackageHashIfPropertyExists(string $property): JSON ); - $expected = \json_encode(\json_decode( - <<toInt(), + ); $normalizer = new Vendor\Composer\PackageHashNormalizer(); diff --git a/test/Unit/Vendor/Composer/VersionConstraintNormalizerTest.php b/test/Unit/Vendor/Composer/VersionConstraintNormalizerTest.php index 3bdac32a..a1cf2fc7 100644 --- a/test/Unit/Vendor/Composer/VersionConstraintNormalizerTest.php +++ b/test/Unit/Vendor/Composer/VersionConstraintNormalizerTest.php @@ -20,6 +20,8 @@ * @internal * * @covers \Ergebnis\Json\Normalizer\Vendor\Composer\VersionConstraintNormalizer + * + * @uses \Ergebnis\Json\Normalizer\Format\JsonEncodeOptions */ final class VersionConstraintNormalizerTest extends AbstractComposerTestCase { @@ -70,7 +72,10 @@ public function testNormalizeIgnoresEmptyPackageHash(string $property): void JSON ); - $expected = \json_encode(\json_decode($json->encoded())); + $expected = \json_encode( + \json_decode($json->encoded()), + 0, + ); $normalizer = new Vendor\Composer\VersionConstraintNormalizer();