Issues (5)

tests/SymfonySerializerTest.php (3 issues)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gember\SerializerSymfony\Test;
6
7
use DateTimeImmutable;
8
use DateTimeZone;
9
use Gember\SerializerSymfony\SymfonySerializer;
0 ignored issues
show
The type Gember\SerializerSymfony\SymfonySerializer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
use Gember\SerializerSymfony\Test\TestDoubles\TestDto;
0 ignored issues
show
The type Gember\SerializerSymfony\Test\TestDoubles\TestDto was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use PHPUnit\Framework\Attributes\Test;
0 ignored issues
show
The type PHPUnit\Framework\Attributes\Test was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use PHPUnit\Framework\TestCase;
13
use Symfony\Component\Serializer\Encoder\JsonEncoder;
14
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
15
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
16
use Symfony\Component\Serializer\Serializer;
17
18
/**
19
 * @internal
20
 */
21
final class SymfonySerializerTest extends TestCase
22
{
23
    private SymfonySerializer $serializer;
24
25
    protected function setUp(): void
26
    {
27
        parent::setUp();
28
29
        $this->serializer = new SymfonySerializer(
30
            new Serializer(
31
                [
32
                    new DateTimeNormalizer([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d\TH:i:s.uP']),
33
                    new ObjectNormalizer(),
34
                ],
35
                [
36
                    new JsonEncoder(),
37
                ],
38
            ),
39
        );
40
    }
41
42
    #[Test]
43
    public function itShouldSerializeObjectIntoPayload(): void
44
    {
45
        $serialized = $this->serializer->serialize(new TestDto(
46
            'da11f500-ab9b-49e6-96eb-83b9f3669a47',
47
            1234,
48
            23.500,
49
            new DateTimeImmutable('2024-05-29 10:30:00.345654', new DateTimeZone('America/Los_Angeles')),
50
        ));
51
52
        self::assertSame(
53
            '{"id":"da11f500-ab9b-49e6-96eb-83b9f3669a47","integer":1234,"float":23.5,"dateTimeImmutable":"2024-05-29T10:30:00.345654-07:00"}',
54
            $serialized,
55
        );
56
    }
57
58
    #[Test]
59
    public function itShouldDeserializePayloadIntoObject(): void
60
    {
61
        $dto = $this->serializer->deserialize(
62
            '{"id":"da11f500-ab9b-49e6-96eb-83b9f3669a47","integer":1234,"float":23.5,"dateTimeImmutable":"2024-05-29T10:30:00.345654-07:00"}',
63
            TestDto::class,
64
        );
65
66
        self::assertEquals(
67
            new TestDto(
68
                'da11f500-ab9b-49e6-96eb-83b9f3669a47',
69
                1234,
70
                23.500,
71
                new DateTimeImmutable('2024-05-29 10:30:00.345654', new DateTimeZone('America/Los_Angeles')),
72
            ),
73
            $dto,
74
        );
75
    }
76
}
77