• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

api-platform / core / 13203378522

07 Feb 2025 03:56PM UTC coverage: 8.501% (+0.7%) from 7.837%
13203378522

push

github

soyuka
Merge 4.1

111 of 490 new or added lines in 51 files covered. (22.65%)

5590 existing lines in 163 files now uncovered.

13345 of 156987 relevant lines covered (8.5%)

22.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/tests/Symfony/Bundle/DependencyInjection/Compiler/MetadataAwareNameConverterPassTest.php
1
<?php
2

3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <dunglas@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

12
declare(strict_types=1);
13

14
namespace ApiPlatform\Tests\Symfony\Bundle\DependencyInjection\Compiler;
15

16
use ApiPlatform\Symfony\Bundle\DependencyInjection\Compiler\MetadataAwareNameConverterPass;
17
use PHPUnit\Framework\TestCase;
18
use Prophecy\PhpUnit\ProphecyTrait;
19
use Symfony\Component\DependencyInjection\Alias;
20
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
21
use Symfony\Component\DependencyInjection\ContainerBuilder;
22
use Symfony\Component\DependencyInjection\Definition;
23
use Symfony\Component\DependencyInjection\Reference;
24

25
/**
26
 * @author Antoine Bluchet <soyuka@gmail.com>
27
 */
28
class MetadataAwareNameConverterPassTest extends TestCase
29
{
30
    use ProphecyTrait;
31

32
    public function testConstruct(): void
33
    {
34
        $this->assertInstanceOf(CompilerPassInterface::class, new MetadataAwareNameConverterPass());
×
35
    }
36

37
    public function testProcessFirstArgumentConfigured(): void
38
    {
39
        $pass = new MetadataAwareNameConverterPass();
×
40

41
        $definition = $this->prophesize(Definition::class);
×
42
        $definition->getArguments()->willReturn([0, 1])->shouldBeCalled();
×
43
        $definition->getArgument(1)->willReturn(new Reference('app.name_converter'))->shouldBeCalled();
×
44

45
        $containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
×
46
        $containerBuilderProphecy->hasAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(true);
×
47
        $containerBuilderProphecy->getAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(new Alias('api_platform.name_converter'));
×
48
        $containerBuilderProphecy->hasDefinition('serializer.name_converter.metadata_aware')->willReturn(true)->shouldBeCalled();
×
49
        $containerBuilderProphecy->getDefinition('serializer.name_converter.metadata_aware')->willReturn($definition)->shouldBeCalled();
×
50
        $containerBuilderProphecy->setAlias('api_platform.name_converter', 'serializer.name_converter.metadata_aware')->shouldBeCalled();
×
51

52
        $pass->process($containerBuilderProphecy->reveal());
×
53
    }
54

55
    public function testProcessWithNameConverter(): void
56
    {
57
        $pass = new MetadataAwareNameConverterPass();
×
58

59
        $reference = new Reference('app.name_converter');
×
60

61
        $definition = $this->prophesize(Definition::class);
×
62
        $definition->getArguments()->willReturn([0, 1])->shouldBeCalled();
×
63
        $definition->getArgument(1)->willReturn(null)->shouldBeCalled();
×
64
        $definition->setArgument(1, $reference)->shouldBeCalled()->willReturn($definition);
×
65

66
        $containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
×
67
        $containerBuilderProphecy->hasAlias('api_platform.name_converter')->willReturn(true)->shouldBeCalled();
×
68
        $containerBuilderProphecy->getAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(new Alias('app.name_converter'));
×
69
        $containerBuilderProphecy->hasDefinition('serializer.name_converter.metadata_aware')->shouldBeCalled()->willReturn(true);
×
70
        $containerBuilderProphecy->getDefinition('serializer.name_converter.metadata_aware')->shouldBeCalled()->willReturn($definition);
×
71
        $containerBuilderProphecy->setAlias('api_platform.name_converter', 'serializer.name_converter.metadata_aware')->shouldBeCalled();
×
72

73
        $pass->process($containerBuilderProphecy->reveal());
×
74
    }
75

76
    public function testProcessWithoutMetadataAwareDefinition(): void
77
    {
78
        $pass = new MetadataAwareNameConverterPass();
×
79

80
        $containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
×
81
        $containerBuilderProphecy->hasDefinition('serializer.name_converter.metadata_aware')->willReturn(false)->shouldBeCalled();
×
82
        $containerBuilderProphecy->setAlias('api_platform.name_converter', 'serializer.name_converter.metadata_aware')->shouldNotBeCalled();
×
83

84
        $pass->process($containerBuilderProphecy->reveal());
×
85
    }
86

87
    public function testProcessOnlyOneArg(): void
88
    {
89
        $pass = new MetadataAwareNameConverterPass();
×
90

91
        $definition = $this->prophesize(Definition::class);
×
92
        $definition->getArguments()->willReturn([0])->shouldBeCalled();
×
93
        $definition->addArgument(new Reference('app.name_converter'))->willReturn($definition)->shouldBeCalled();
×
94

95
        $containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
×
96
        $containerBuilderProphecy->hasDefinition('serializer.name_converter.metadata_aware')->willReturn(true)->shouldBeCalled();
×
97
        $containerBuilderProphecy->hasAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(true);
×
98
        $containerBuilderProphecy->getAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(new Alias('app.name_converter'));
×
99
        $containerBuilderProphecy->setAlias('api_platform.name_converter', 'serializer.name_converter.metadata_aware')->shouldBeCalled();
×
100
        $containerBuilderProphecy->getDefinition('serializer.name_converter.metadata_aware')->shouldBeCalled()->willReturn($definition);
×
101

102
        $pass->process($containerBuilderProphecy->reveal());
×
103
    }
104

105
    public function testProcessWithAbstractMetadataAware(): void
106
    {
UNCOV
107
        $pass = new MetadataAwareNameConverterPass();
×
108

UNCOV
109
        $definition = $this->prophesize(Definition::class);
×
UNCOV
110
        $definition->getArguments()->willReturn(['$metadataFactory' => [], '$fallbackNameConverter' => null])->shouldBeCalled();
×
UNCOV
111
        $definition->getArgument('$fallbackNameConverter')->willReturn(null)->shouldBeCalled();
×
UNCOV
112
        $definition->setArgument('$fallbackNameConverter', new Reference('app.name_converter'))->willReturn($definition)->shouldBeCalled();
×
113

UNCOV
114
        $containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
×
UNCOV
115
        $containerBuilderProphecy->hasDefinition('serializer.name_converter.metadata_aware')->willReturn(true)->shouldBeCalled();
×
UNCOV
116
        $containerBuilderProphecy->hasAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(true);
×
UNCOV
117
        $containerBuilderProphecy->getAlias('api_platform.name_converter')->shouldBeCalled()->willReturn(new Alias('app.name_converter'));
×
UNCOV
118
        $containerBuilderProphecy->setAlias('api_platform.name_converter', 'serializer.name_converter.metadata_aware')->shouldBeCalled();
×
UNCOV
119
        $containerBuilderProphecy->getDefinition('serializer.name_converter.metadata_aware')->shouldBeCalled()->willReturn($definition);
×
120

UNCOV
121
        $pass->process($containerBuilderProphecy->reveal());
×
122
    }
123
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc