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

onmoon / openapi-server-bundle / 15881876638

25 Jun 2025 04:28PM UTC coverage: 80.585% (-0.5%) from 81.095%
15881876638

Pull #196

github

web-flow
Merge 90ce8070d into c35fba5f2
Pull Request #196: Fix minimum versions install

9 of 29 new or added lines in 5 files covered. (31.03%)

44 existing lines in 12 files now uncovered.

1378 of 1710 relevant lines covered (80.58%)

3.8 hits per line

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

0.0
/src/CodeGenerator/FileGenerator.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace OnMoon\OpenApiServerBundle\CodeGenerator;
6

7
use OnMoon\OpenApiServerBundle\CodeGenerator\Definitions\DtoDefinition;
8
use OnMoon\OpenApiServerBundle\CodeGenerator\Definitions\DtoReference;
9
use OnMoon\OpenApiServerBundle\CodeGenerator\Definitions\GeneratedFileDefinition;
10
use OnMoon\OpenApiServerBundle\CodeGenerator\Definitions\GraphDefinition;
11
use OnMoon\OpenApiServerBundle\CodeGenerator\PhpParserGenerators\DtoCodeGenerator;
12
use OnMoon\OpenApiServerBundle\CodeGenerator\PhpParserGenerators\InterfaceCodeGenerator;
13
use OnMoon\OpenApiServerBundle\CodeGenerator\PhpParserGenerators\ServiceSubscriberCodeGenerator;
14

15
use function array_push;
16

17
/** @psalm-suppress ClassMustBeFinal */
18
class FileGenerator
19
{
20
    private DtoCodeGenerator $dtoGenerator;
21
    private InterfaceCodeGenerator $interfaceGenerator;
22
    private ServiceSubscriberCodeGenerator $serviceSubscriberGenerator;
23

24
    public function __construct(
25
        DtoCodeGenerator $dtoGenerator,
26
        InterfaceCodeGenerator $interfaceGenerator,
27
        ServiceSubscriberCodeGenerator $serviceSubscriberGenerator
28
    ) {
UNCOV
29
        $this->dtoGenerator               = $dtoGenerator;
×
30
        $this->interfaceGenerator         = $interfaceGenerator;
×
31
        $this->serviceSubscriberGenerator = $serviceSubscriberGenerator;
×
32
    }
33

34
    /** @return GeneratedFileDefinition[] */
35
    public function generateAllFiles(GraphDefinition $graph): array
36
    {
37
        /** @var GeneratedFileDefinition[] $result */
UNCOV
38
        $result = [];
×
39
        foreach ($graph->getSpecifications() as $specificationDefinition) {
×
40
            foreach ($specificationDefinition->getComponents() as $component) {
×
41
                array_push($result, ...$this->generateDtoTree($component->getDto()));
×
42
            }
43

UNCOV
44
            foreach ($specificationDefinition->getOperations() as $operation) {
×
45
                array_push($result, ...$this->generateDtoTree($operation->getRequest()));
×
46

UNCOV
47
                foreach ($operation->getResponses() as $response) {
×
48
                    array_push($result, ...$this->generateDtoTree($response->getResponseBody()));
×
49
                }
50

UNCOV
51
                $result[] = $this->interfaceGenerator->generate($operation->getRequestHandlerInterface());
×
52
            }
53
        }
54

UNCOV
55
        $result[] = $this->serviceSubscriberGenerator->generate($graph);
×
56

UNCOV
57
        return $result;
×
58
    }
59

60
    /** @return GeneratedFileDefinition[] */
61
    public function generateDtoTree(?DtoReference $root): array
62
    {
UNCOV
63
        if (! $root instanceof DtoDefinition) {
×
64
            return [];
×
65
        }
66

UNCOV
67
        $result   = [];
×
68
        $result[] = $this->dtoGenerator->generate($root);
×
69
        foreach ($root->getProperties() as $property) {
×
70
            array_push($result, ...$this->generateDtoTree($property->getObjectTypeDefinition()));
×
71
        }
72

UNCOV
73
        return $result;
×
74
    }
75
}
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