Skip to content
This repository was archived by the owner on Mar 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ A simple serialization.
## Requirements

* php: ^8.2
* chubbyphp/chubbyphp-decode-encode: ^1.1
* chubbyphp/chubbyphp-decode-encode: ^1.2
* doctrine/inflector: ^1.4.4|^2.0.10
* psr/http-message: ^1.1|^2.0
* psr/link: ^1.1.1|^2.0.1
Expand Down
12 changes: 6 additions & 6 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"ext-dom": "*",
"ext-json": "*",
"ext-mbstring": "*",
"chubbyphp/chubbyphp-decode-encode": "^1.1",
"chubbyphp/chubbyphp-decode-encode": "^1.2",
"doctrine/inflector": "^1.4.4|^2.0.10",
"psr/http-message": "^1.1|^2.0",
"psr/link": "^1.1.1|^2.0.1",
Expand All @@ -23,15 +23,15 @@
"require-dev": {
"chubbyphp/chubbyphp-container": "^2.2",
"chubbyphp/chubbyphp-dev-helper": "dev-master",
"chubbyphp/chubbyphp-laminas-config-factory": "^1.3",
"chubbyphp/chubbyphp-mock": "^1.8.0",
"chubbyphp/chubbyphp-laminas-config-factory": "^1.4",
"chubbyphp/chubbyphp-mock": "^2.0@dev",
"doctrine/collections": "^2.2.2",
"doctrine/persistence": "^4.0",
"infection/infection": "^0.29.8",
"infection/infection": "^0.29.12",
"php-coveralls/php-coveralls": "^2.7.0",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.0.3",
"phpunit/phpunit": "^11.5.0",
"phpstan/phpstan": "^2.1.6",
"phpunit/phpunit": "^11.5.9",
"pimple/pimple": "^3.5",
"psr/container": "^2.0.2",
"symfony/config": "^5.4.46|^6.4.14|^7.2",
Expand Down
56 changes: 37 additions & 19 deletions tests/Unit/Mapping/CallableNormalizationObjectMappingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

namespace Chubbyphp\Tests\Serialization\Unit\Mapping;

use Chubbyphp\Mock\Call;
use Chubbyphp\Mock\MockByCallsTrait;
use Chubbyphp\Mock\MockMethod\WithReturn;
use Chubbyphp\Mock\MockObjectBuilder;
use Chubbyphp\Serialization\Mapping\CallableNormalizationObjectMapping;
use Chubbyphp\Serialization\Mapping\NormalizationFieldMappingInterface;
use Chubbyphp\Serialization\Mapping\NormalizationLinkMappingInterface;
Expand All @@ -19,8 +19,6 @@
*/
final class CallableNormalizationObjectMappingTest extends TestCase
{
use MockByCallsTrait;

public function testGetClass(): void
{
$mapping = new CallableNormalizationObjectMapping(\stdClass::class, static function (): void {});
Expand All @@ -30,42 +28,62 @@ public function testGetClass(): void

public function testGetNormalizationType(): void
{
$mapping = new CallableNormalizationObjectMapping(\stdClass::class, fn () => $this->getMockByCalls(NormalizationObjectMappingInterface::class, [
Call::create('getNormalizationType')->with()->willReturn('type'),
]));
$builder = new MockObjectBuilder();

/** @var NormalizationObjectMappingInterface $normalizationObjectMapping */
$normalizationObjectMapping = $builder->create(NormalizationObjectMappingInterface::class, [
new WithReturn('getNormalizationType', [], 'type'),
]);

$mapping = new CallableNormalizationObjectMapping(\stdClass::class, static fn () => $normalizationObjectMapping);

self::assertSame('type', $mapping->getNormalizationType());
}

public function testGetNormalizationFieldMappings(): void
{
$fieldMapping = $this->getMockByCalls(NormalizationFieldMappingInterface::class);
$builder = new MockObjectBuilder();

/** @var NormalizationFieldMappingInterface $fieldMapping */
$fieldMapping = $builder->create(NormalizationFieldMappingInterface::class, []);

$normalizationObjectMapping = $builder->create(NormalizationObjectMappingInterface::class, [
new WithReturn('getNormalizationFieldMappings', ['path'], [$fieldMapping]),
]);

$mapping = new CallableNormalizationObjectMapping(\stdClass::class, fn () => $this->getMockByCalls(NormalizationObjectMappingInterface::class, [
Call::create('getNormalizationFieldMappings')->with('path')->willReturn([$fieldMapping]),
]));
$mapping = new CallableNormalizationObjectMapping(\stdClass::class, static fn () => $normalizationObjectMapping);

self::assertSame($fieldMapping, $mapping->getNormalizationFieldMappings('path')[0]);
}

public function testGetNormalizationEmbeddedFieldMappings(): void
{
$fieldMapping = $this->getMockByCalls(NormalizationFieldMappingInterface::class);
$builder = new MockObjectBuilder();

$mapping = new CallableNormalizationObjectMapping(\stdClass::class, fn () => $this->getMockByCalls(NormalizationObjectMappingInterface::class, [
Call::create('getNormalizationEmbeddedFieldMappings')->with('path')->willReturn([$fieldMapping]),
]));
/** @var NormalizationFieldMappingInterface $fieldMapping */
$fieldMapping = $builder->create(NormalizationFieldMappingInterface::class, []);

$normalizationObjectMapping = $builder->create(NormalizationObjectMappingInterface::class, [
new WithReturn('getNormalizationEmbeddedFieldMappings', ['path'], [$fieldMapping]),
]);

$mapping = new CallableNormalizationObjectMapping(\stdClass::class, static fn () => $normalizationObjectMapping);

self::assertSame($fieldMapping, $mapping->getNormalizationEmbeddedFieldMappings('path')[0]);
}

public function testGetNormalizationLinkMappings(): void
{
$linkMapping = $this->getMockByCalls(NormalizationLinkMappingInterface::class);
$builder = new MockObjectBuilder();

/** @var NormalizationLinkMappingInterface $linkMapping */
$linkMapping = $builder->create(NormalizationLinkMappingInterface::class, []);

$normalizationObjectMapping = $builder->create(NormalizationObjectMappingInterface::class, [
new WithReturn('getNormalizationLinkMappings', ['path'], [$linkMapping]),
]);

$mapping = new CallableNormalizationObjectMapping(\stdClass::class, fn () => $this->getMockByCalls(NormalizationObjectMappingInterface::class, [
Call::create('getNormalizationLinkMappings')->with('path')->willReturn([$linkMapping]),
]));
$mapping = new CallableNormalizationObjectMapping(\stdClass::class, static fn () => $normalizationObjectMapping);

self::assertSame($linkMapping, $mapping->getNormalizationLinkMappings('path')[0]);
}
Expand Down
46 changes: 23 additions & 23 deletions tests/Unit/Mapping/LazyNormalizationObjectMappingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

namespace Chubbyphp\Tests\Serialization\Unit\Mapping;

use Chubbyphp\Mock\Call;
use Chubbyphp\Mock\MockByCallsTrait;
use Chubbyphp\Mock\MockMethod\WithReturn;
use Chubbyphp\Mock\MockObjectBuilder;
use Chubbyphp\Serialization\Mapping\LazyNormalizationObjectMapping;
use Chubbyphp\Serialization\Mapping\NormalizationFieldMappingInterface;
use Chubbyphp\Serialization\Mapping\NormalizationLinkMappingInterface;
Expand All @@ -21,36 +21,36 @@
*/
final class LazyNormalizationObjectMappingTest extends TestCase
{
use MockByCallsTrait;

public function testInvoke(): void
{
$normalizationFieldMappings = [$this->getMockByCalls(NormalizationFieldMappingInterface::class)];
$builder = new MockObjectBuilder();

$normalizationFieldMappings = [
$builder->create(NormalizationFieldMappingInterface::class, []),
];

$normalizationEmbeddedFieldMappings = [$this->getMockByCalls(NormalizationFieldMappingInterface::class)];
$normalizationEmbeddedFieldMappings = [
$builder->create(NormalizationFieldMappingInterface::class, []),
];

$normalizationLinkMappings = [$this->getMockByCalls(NormalizationLinkMappingInterface::class)];
$normalizationLinkMappings = [
$builder->create(NormalizationLinkMappingInterface::class, []),
];

/** @var MockObject|NormalizationObjectMappingInterface $normalizationObjectMapping */
$normalizationObjectMapping = $this->getMockByCalls(NormalizationObjectMappingInterface::class, [
Call::create('getNormalizationType')->with()->willReturn('type'),
Call::create('getNormalizationFieldMappings')
->with('path')
->willReturn($normalizationFieldMappings),
Call::create('getNormalizationEmbeddedFieldMappings')
->with('path')
->willReturn($normalizationEmbeddedFieldMappings),
Call::create('getNormalizationLinkMappings')
->with('path')
->willReturn($normalizationLinkMappings),
$normalizationObjectMapping = $builder->create(NormalizationObjectMappingInterface::class, [
new WithReturn('getNormalizationType', [], 'type'),
new WithReturn('getNormalizationFieldMappings', ['path'], $normalizationFieldMappings),
new WithReturn('getNormalizationEmbeddedFieldMappings', ['path'], $normalizationEmbeddedFieldMappings),
new WithReturn('getNormalizationLinkMappings', ['path'], $normalizationLinkMappings),
]);

/** @var ContainerInterface|MockObject $container */
$container = $this->getMockByCalls(ContainerInterface::class, [
Call::create('get')->with('service')->willReturn($normalizationObjectMapping),
Call::create('get')->with('service')->willReturn($normalizationObjectMapping),
Call::create('get')->with('service')->willReturn($normalizationObjectMapping),
Call::create('get')->with('service')->willReturn($normalizationObjectMapping),
$container = $builder->create(ContainerInterface::class, [
new WithReturn('get', ['service'], $normalizationObjectMapping),
new WithReturn('get', ['service'], $normalizationObjectMapping),
new WithReturn('get', ['service'], $normalizationObjectMapping),
new WithReturn('get', ['service'], $normalizationObjectMapping),
]);

$objectMapping = new LazyNormalizationObjectMapping($container, 'service', \stdClass::class);
Expand Down
14 changes: 8 additions & 6 deletions tests/Unit/Mapping/NormalizationFieldMappingBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Chubbyphp\Tests\Serialization\Unit\Mapping;

use Chubbyphp\Mock\MockByCallsTrait;
use Chubbyphp\Mock\MockObjectBuilder;
use Chubbyphp\Serialization\Mapping\NormalizationFieldMappingBuilder;
use Chubbyphp\Serialization\Normalizer\CallbackFieldNormalizer;
use Chubbyphp\Serialization\Normalizer\DateTimeFieldNormalizer;
Expand All @@ -26,8 +26,6 @@
*/
final class NormalizationFieldMappingBuilderTest extends TestCase
{
use MockByCallsTrait;

public function testGetDefaultMapping(): void
{
$fieldMapping = NormalizationFieldMappingBuilder::create('name')->getMapping();
Expand All @@ -39,8 +37,10 @@ public function testGetDefaultMapping(): void

public function testGetMappingWithNormalizer(): void
{
$builder = new MockObjectBuilder();

/** @var FieldNormalizerInterface|MockObject $fieldNormalizer */
$fieldNormalizer = $this->getMockByCalls(FieldNormalizerInterface::class);
$fieldNormalizer = $builder->create(FieldNormalizerInterface::class, []);

$fieldMapping = NormalizationFieldMappingBuilder::create('name', $fieldNormalizer)->getMapping();

Expand Down Expand Up @@ -122,11 +122,13 @@ public function testGetDefaultMappingForReferenceOne(): void

public function testGetMapping(): void
{
$builder = new MockObjectBuilder();

/** @var FieldNormalizerInterface|MockObject $fieldNormalizer */
$fieldNormalizer = $this->getMockByCalls(FieldNormalizerInterface::class);
$fieldNormalizer = $builder->create(FieldNormalizerInterface::class, []);

/** @var MockObject|PolicyInterface $policy */
$policy = $this->getMockByCalls(PolicyInterface::class);
$policy = $builder->create(PolicyInterface::class, []);

$fieldMapping = NormalizationFieldMappingBuilder::create('name', $fieldNormalizer)
->setPolicy($policy)
Expand Down
18 changes: 11 additions & 7 deletions tests/Unit/Mapping/NormalizationFieldMappingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Chubbyphp\Tests\Serialization\Unit\Mapping;

use Chubbyphp\Mock\MockByCallsTrait;
use Chubbyphp\Mock\MockObjectBuilder;
use Chubbyphp\Serialization\Mapping\NormalizationFieldMapping;
use Chubbyphp\Serialization\Normalizer\FieldNormalizerInterface;
use Chubbyphp\Serialization\Policy\PolicyInterface;
Expand All @@ -18,12 +18,12 @@
*/
final class NormalizationFieldMappingTest extends TestCase
{
use MockByCallsTrait;

public function testGetName(): void
{
$builder = new MockObjectBuilder();

/** @var FieldNormalizerInterface|MockObject $fieldNormalizer */
$fieldNormalizer = $this->getMockByCalls(FieldNormalizerInterface::class);
$fieldNormalizer = $builder->create(FieldNormalizerInterface::class, []);

$fieldMapping = new NormalizationFieldMapping('name', $fieldNormalizer);

Expand All @@ -32,8 +32,10 @@ public function testGetName(): void

public function testGetFieldNormalizer(): void
{
$builder = new MockObjectBuilder();

/** @var FieldNormalizerInterface|MockObject $fieldNormalizer */
$fieldNormalizer = $this->getMockByCalls(FieldNormalizerInterface::class);
$fieldNormalizer = $builder->create(FieldNormalizerInterface::class, []);

$fieldMapping = new NormalizationFieldMapping('name', $fieldNormalizer);

Expand All @@ -42,11 +44,13 @@ public function testGetFieldNormalizer(): void

public function testGetPolicy(): void
{
$builder = new MockObjectBuilder();

/** @var FieldNormalizerInterface|MockObject $fieldNormalizer */
$fieldNormalizer = $this->getMockByCalls(FieldNormalizerInterface::class);
$fieldNormalizer = $builder->create(FieldNormalizerInterface::class, []);

/** @var MockObject|PolicyInterface $policy */
$policy = $this->getMockByCalls(PolicyInterface::class);
$policy = $builder->create(PolicyInterface::class, []);

$fieldMapping = new NormalizationFieldMapping('name', $fieldNormalizer, $policy);

Expand Down
18 changes: 11 additions & 7 deletions tests/Unit/Mapping/NormalizationLinkMappingBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Chubbyphp\Tests\Serialization\Unit\Mapping;

use Chubbyphp\Mock\MockByCallsTrait;
use Chubbyphp\Mock\MockObjectBuilder;
use Chubbyphp\Serialization\Mapping\NormalizationLinkMappingBuilder;
use Chubbyphp\Serialization\Normalizer\CallbackLinkNormalizer;
use Chubbyphp\Serialization\Normalizer\LinkNormalizer;
Expand All @@ -22,12 +22,12 @@
*/
final class NormalizationLinkMappingBuilderTest extends TestCase
{
use MockByCallsTrait;

public function testGetDefaultMapping(): void
{
$builder = new MockObjectBuilder();

/** @var LinkNormalizerInterface|MockObject $linkNormalizer */
$linkNormalizer = $this->getMockByCalls(LinkNormalizerInterface::class);
$linkNormalizer = $builder->create(LinkNormalizerInterface::class, []);

$linkMapping = NormalizationLinkMappingBuilder::create('name', $linkNormalizer)->getMapping();

Expand All @@ -47,8 +47,10 @@ public function testGetDefaultMappingForCallback(): void

public function testGetDefaultMappingForLink(): void
{
$builder = new MockObjectBuilder();

/** @var LinkInterface|MockObject $link */
$link = $this->getMockByCalls(LinkInterface::class);
$link = $builder->create(LinkInterface::class, []);

$linkMapping = NormalizationLinkMappingBuilder::createLink('name', $link)->getMapping();

Expand All @@ -59,11 +61,13 @@ public function testGetDefaultMappingForLink(): void

public function testGetMapping(): void
{
$builder = new MockObjectBuilder();

/** @var LinkNormalizerInterface|MockObject $linkNormalizer */
$linkNormalizer = $this->getMockByCalls(LinkNormalizerInterface::class);
$linkNormalizer = $builder->create(LinkNormalizerInterface::class, []);

/** @var MockObject|PolicyInterface $policy */
$policy = $this->getMockByCalls(PolicyInterface::class);
$policy = $builder->create(PolicyInterface::class, []);

$linkMapping = NormalizationLinkMappingBuilder::create('name', $linkNormalizer)
->setPolicy($policy)
Expand Down
Loading
Loading