Skip to content

Commit 4b8f100

Browse files
committed
add innerNormalizer methods & rename className methods
1 parent f5ed341 commit 4b8f100

8 files changed

Lines changed: 57 additions & 14 deletions

src/Normalizer/ArrayNormalizer.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,9 @@ public function handleType(Type|null $type): void
101101

102102
$this->normalizer->handleType($type->getCollectionValueType());
103103
}
104+
105+
public function innerNormalizer(): Normalizer
106+
{
107+
return $this->normalizer;
108+
}
104109
}

src/Normalizer/ArrayShapeNormalizer.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,10 @@ public function handleType(Type|null $type): void
120120
$normalizer->handleType($shape[$field]['type']);
121121
}
122122
}
123+
124+
/** @return array<array-key, Normalizer> */
125+
public function innerNormalizers(): array
126+
{
127+
return $this->normalizerMap;
128+
}
123129
}

src/Normalizer/EnumNormalizer.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Attribute;
88
use BackedEnum;
9+
use Deprecated;
910
use ReflectionType;
1011
use Symfony\Component\TypeInfo\Type;
1112
use Symfony\Component\TypeInfo\Type\BackedEnumType;
@@ -30,7 +31,7 @@ public function normalize(mixed $value): mixed
3031
return null;
3132
}
3233

33-
$enum = $this->getEnum();
34+
$enum = $this->className();
3435

3536
if (!$value instanceof $enum) {
3637
throw InvalidArgument::withWrongType($enum . '|null', $value);
@@ -49,7 +50,7 @@ public function denormalize(mixed $value): BackedEnum|null
4950
throw InvalidArgument::withWrongType('string|int|null', $value);
5051
}
5152

52-
$enum = $this->getEnum();
53+
$enum = $this->className();
5354

5455
try {
5556
return $enum::from($value);
@@ -86,7 +87,14 @@ public function handleType(Type|null $type): void
8687
}
8788

8889
/** @return class-string<BackedEnum> */
90+
#[Deprecated('Use `className()` method instead')]
8991
public function getEnum(): string
92+
{
93+
return $this->className();
94+
}
95+
96+
/** @return class-string<BackedEnum> */
97+
public function className(): string
9098
{
9199
if ($this->enum === null) {
92100
throw InvalidType::missingType();

src/Normalizer/ObjectNormalizer.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Patchlevel\Hydrator\Normalizer;
66

77
use Attribute;
8+
use Deprecated;
89
use Patchlevel\Hydrator\Hydrator;
910
use Patchlevel\Hydrator\HydratorWithContext;
1011
use ReflectionType;
@@ -42,7 +43,7 @@ public function normalize(mixed $value, array $context = []): array|null
4243
return null;
4344
}
4445

45-
$className = $this->getClassName();
46+
$className = $this->className();
4647

4748
if (!$value instanceof $className) {
4849
throw InvalidArgument::withWrongType($className . '|null', $value);
@@ -70,7 +71,7 @@ public function denormalize(mixed $value, array $context = []): object|null
7071
throw InvalidArgument::withWrongType('array<string, mixed>|null', $value);
7172
}
7273

73-
$className = $this->getClassName();
74+
$className = $this->className();
7475

7576
if ($this->hydrator instanceof HydratorWithContext) {
7677
return $this->hydrator->hydrate($className, $value, $context);
@@ -120,7 +121,14 @@ public function handleType(Type|null $type): void
120121
}
121122

122123
/** @return class-string */
124+
#[Deprecated('Use `className()` method instead')]
123125
public function getClassName(): string
126+
{
127+
return $this->className();
128+
}
129+
130+
/** @return class-string */
131+
public function className(): string
124132
{
125133
if ($this->className === null) {
126134
throw InvalidType::missingType();

tests/Unit/Normalizer/ArrayNormalizerTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,12 @@ public function testPassHydrator(): void
161161
$normalizer = new ArrayNormalizer($normalizer);
162162
$normalizer->setHydrator($hydrator);
163163
}
164+
165+
public function testInnerNormalizer(): void
166+
{
167+
$innerNormalizer = $this->createMock(Normalizer::class);
168+
$normalizer = new ArrayNormalizer($innerNormalizer);
169+
170+
self::assertSame($innerNormalizer, $normalizer->innerNormalizer());
171+
}
164172
}

tests/Unit/Normalizer/ArrayShapeNormalizerTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,12 @@ public function testPassHydrator(): void
161161
$normalizer = new ArrayShapeNormalizer(['foo' => $normalizer]);
162162
$normalizer->setHydrator($hydrator);
163163
}
164+
165+
public function testInnerNormalizers(): void
166+
{
167+
$innerNormalizer = $this->createMock(Normalizer::class);
168+
$normalizer = new ArrayShapeNormalizer(['foo' => $innerNormalizer]);
169+
170+
self::assertSame(['foo' => $innerNormalizer], $normalizer->innerNormalizers());
171+
}
164172
}

tests/Unit/Normalizer/EnumNormalizerTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,23 +69,23 @@ public function testAutoDetect(): void
6969
$normalizer = new EnumNormalizer();
7070
$normalizer->handleReflectionType($this->reflectionType(AutoTypeDto::class, 'status'));
7171

72-
self::assertEquals(Status::class, $normalizer->getEnum());
72+
self::assertEquals(Status::class, $normalizer->className());
7373
}
7474

7575
public function testAutoDetectOverrideNotPossible(): void
7676
{
7777
$normalizer = new EnumNormalizer(AnotherEnum::class);
7878
$normalizer->handleReflectionType($this->reflectionType(AutoTypeDto::class, 'status'));
7979

80-
self::assertEquals(AnotherEnum::class, $normalizer->getEnum());
80+
self::assertEquals(AnotherEnum::class, $normalizer->className());
8181
}
8282

8383
public function testAutoDetectMissingType(): void
8484
{
8585
$this->expectException(InvalidType::class);
8686

8787
$normalizer = new EnumNormalizer();
88-
$normalizer->getEnum();
88+
$normalizer->className();
8989
}
9090

9191
public function testAutoDetectMissingTypeBecauseNull(): void
@@ -95,7 +95,7 @@ public function testAutoDetectMissingTypeBecauseNull(): void
9595
$normalizer = new EnumNormalizer();
9696
$normalizer->handleReflectionType(null);
9797

98-
$normalizer->getEnum();
98+
$normalizer->className();
9999
}
100100

101101
/** @param class-string $class */

tests/Unit/Normalizer/ObjectNormalizerTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ public function testAutoDetect(): void
189189
$normalizer->setHydrator($hydrator);
190190
$normalizer->handleReflectionType($this->reflectionType(AutoTypeDto::class, 'profileCreated'));
191191

192-
self::assertEquals(ProfileCreated::class, $normalizer->getClassName());
192+
self::assertEquals(ProfileCreated::class, $normalizer->className());
193193
}
194194

195195
public function testAutoDetectOverrideNotPossible(): void
@@ -200,7 +200,7 @@ public function testAutoDetectOverrideNotPossible(): void
200200
$normalizer->setHydrator($hydrator);
201201
$normalizer->handleReflectionType($this->reflectionType(AutoTypeDto::class, 'profileCreated'));
202202

203-
self::assertEquals(AutoTypeDto::class, $normalizer->getClassName());
203+
self::assertEquals(AutoTypeDto::class, $normalizer->className());
204204
}
205205

206206
public function testAutoDetectMissingType(): void
@@ -212,7 +212,7 @@ public function testAutoDetectMissingType(): void
212212
$normalizer = new ObjectNormalizer();
213213
$normalizer->setHydrator($hydrator);
214214

215-
$normalizer->getClassName();
215+
$normalizer->className();
216216
}
217217

218218
public function testAutoDetectMissingTypeBecauseNull(): void
@@ -225,7 +225,7 @@ public function testAutoDetectMissingTypeBecauseNull(): void
225225
$normalizer->setHydrator($hydrator);
226226
$normalizer->handleReflectionType(null);
227227

228-
$normalizer->getClassName();
228+
$normalizer->className();
229229
}
230230

231231
public function testGeneric(): void
@@ -236,7 +236,7 @@ public function testGeneric(): void
236236
$normalizer->setHydrator($hydrator);
237237
$normalizer->handleType(Type::generic(Type::object(ProfileCreated::class)));
238238

239-
self::assertEquals(ProfileCreated::class, $normalizer->getClassName());
239+
self::assertEquals(ProfileCreated::class, $normalizer->className());
240240
}
241241

242242
public function testTemplate(): void
@@ -247,7 +247,7 @@ public function testTemplate(): void
247247
$normalizer->setHydrator($hydrator);
248248
$normalizer->handleType(Type::template('T', Type::object(ProfileCreated::class)));
249249

250-
self::assertEquals(ProfileCreated::class, $normalizer->getClassName());
250+
self::assertEquals(ProfileCreated::class, $normalizer->className());
251251
}
252252

253253
public function testSerialize(): void

0 commit comments

Comments
 (0)