From 1c8d06d432f022aae0ee4a2a63cab182501a407e Mon Sep 17 00:00:00 2001 From: Jannik Zschiesche Date: Wed, 21 Feb 2024 14:42:39 +0100 Subject: [PATCH 1/2] Require PHP 8.3 --- .github/workflows/ci.yml | 2 +- composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30a0caf..ce975a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: - php: ['8.1'] + php: ['8.3'] steps: - name: Checkout Code diff --git a/composer.json b/composer.json index 79d2458..c908e93 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ ], "homepage": "https://github.com/21TORR/simple-normalizer", "require": { - "php": ">= 8.1", + "php": ">= 8.3", "21torr/bundle-helpers": "^2.1", "symfony/dependency-injection": "^6.1", "symfony/http-kernel": "^6.1" From f59827cbccc8cb617936b3e88850c821930e9a98 Mon Sep 17 00:00:00 2001 From: Jannik Zschiesche Date: Wed, 21 Feb 2024 14:43:02 +0100 Subject: [PATCH 2/2] Add ValueWithContext VO --- CHANGELOG.md | 1 + src/Data/ValueWithContext.php | 13 +++++ .../ValueWithContextNormalizer.php | 32 ++++++++++++ .../ValueWithContextNormalizerTest.php | 49 +++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 src/Data/ValueWithContext.php create mode 100644 src/Normalizer/ObjectNormalizer/ValueWithContextNormalizer.php create mode 100644 tests/Normalizer/ObjectNormalizer/ValueWithContextNormalizerTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 76e95dd..f344995 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ===== * (feature) Add `SimpleNormalizer::normalizeMap()`. +* (feature) Add helper VO `ValueWithContext`. 1.1.1 diff --git a/src/Data/ValueWithContext.php b/src/Data/ValueWithContext.php new file mode 100644 index 0000000..bf81786 --- /dev/null +++ b/src/Data/ValueWithContext.php @@ -0,0 +1,13 @@ +normalize( + $value->value, + \array_replace($context, $value->context), + ); + } + + + /** + * @inheritDoc + */ + public static function getNormalizedType () : string + { + return ValueWithContext::class; + } +} diff --git a/tests/Normalizer/ObjectNormalizer/ValueWithContextNormalizerTest.php b/tests/Normalizer/ObjectNormalizer/ValueWithContextNormalizerTest.php new file mode 100644 index 0000000..d27a351 --- /dev/null +++ b/tests/Normalizer/ObjectNormalizer/ValueWithContextNormalizerTest.php @@ -0,0 +1,49 @@ + "hai", + ], + ); + + $dummyNormalizer = $this->createMock(SimpleObjectNormalizerInterface::class); + $dummyNormalizer + ->expects(self::once()) + ->method("normalize") + ->with( + $value->value, + [ + "test" => 123, + "o" => "hai", + ], + ); + + $normalizer = new SimpleNormalizer(new ServiceLocator([ + ValueWithContext::class => fn () => new ValueWithContextNormalizer(), + DummyVO::class => fn () => $dummyNormalizer, + ])); + + $normalizer->normalize($value, [ + "test" => 123, + "o" => 5, + ]); + } +}