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

wol-soft / php-json-schema-model-generator-production / 30094849029

24 Jul 2026 02:22AM UTC coverage: 37.186% (+19.9%) from 17.248%
30094849029

push

github

wol-soft
Sync 2019-09-specific exception wording to the quoting/no-trailing-period convention

The draft-2019-09 keyword exceptions (unevaluatedItems, unevaluatedProperties,
minContains/maxContains) were added on this branch before master's wording pass
landed here via merge, so they still had unquoted property names, an unquoted
list of unevaluated property names, and a trailing period on a bulleted-list
header. Also replace InvalidUnevaluatedItemsException's hand-rolled bullet-list
joining with MessageFormatter::bulletList(), which already does the same thing,
and align RegularPropertyAsUnevaluatedPropertyException's wording (quoting,
"Could not" instead of "Couldn't") with its sibling
RegularPropertyAsAdditionalPropertyException.

0 of 13 new or added lines in 6 files covered. (0.0%)

34 existing lines in 10 files now uncovered.

370 of 995 relevant lines covered (37.19%)

1.5 hits per line

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

74.07
/src/Exception/ComposedValue/ConditionalException.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace PHPModelGenerator\Exception\ComposedValue;
6

7
use Exception;
8
use PHPModelGenerator\Exception\ErrorRegistryExceptionInterface;
9
use PHPModelGenerator\Exception\MessageFormatter;
10
use PHPModelGenerator\Exception\ValidationException;
11

12
/**
13
 * Class ConditionalException
14
 *
15
 * @package PHPModelGenerator\Exception\ComposedValue
16
 */
17
class ConditionalException extends ValidationException
18
{
19
    /**
20
     * ConditionalException constructor.
21
     *
22
     * @param $providedValue
23
     */
24
    public function __construct(
2✔
25
        $providedValue,
26
        string $propertyName,
27
        string $jsonPointer,
28
        private readonly ?Exception $ifException,
29
        private readonly ?Exception $thenException,
30
        private readonly ?Exception $elseException
31
    ) {
32
        // A conditional branch validates the same value at the same position as the conditional
33
        // itself — it consumes no path segment of its own, so branch errors only need the parent
34
        // link (not a segment replacement) to inherit wherever this conditional ends up.
35
        foreach ([$this->ifException, $this->thenException, $this->elseException] as $branchException) {
2✔
36
            $this->linkInstancePointerParent($branchException);
2✔
37
        }
38

39
        parent::__construct($this->getErrorMessage($propertyName), $propertyName, $providedValue, $jsonPointer);
2✔
40
    }
41

42
    private function linkInstancePointerParent(?Exception $exception): void
2✔
43
    {
44
        if ($exception instanceof ErrorRegistryExceptionInterface) {
2✔
45
            foreach ($exception->getErrors() as $error) {
1✔
46
                $error->setInstancePointerParent($this);
1✔
47
            }
48
        } elseif ($exception instanceof ValidationException) {
2✔
49
            $exception->setInstancePointerParent($this);
1✔
50
        }
51
    }
52

UNCOV
53
    public function getIfException(): ?Exception
×
54
    {
55
        return $this->ifException;
×
56
    }
57

58
    public function getThenException(): ?Exception
×
59
    {
UNCOV
60
        return $this->thenException;
×
61
    }
62

UNCOV
63
    public function getElseException(): ?Exception
×
64
    {
65
        return $this->elseException;
×
66
    }
67

68
    private function getErrorMessage(string $propertyName): string
2✔
69
    {
70
        $message = "Invalid value for '$propertyName' declined by conditional composition constraint\n";
2✔
71

72
        $message .= $this->ifException
2✔
UNCOV
73
            ? "  - Condition: Failed" . $this->getExceptionMessage($this->ifException)
×
74
            : '  - Condition: Valid';
2✔
75

76
        return $message . "\n  - Conditional branch failed:" .
2✔
77
            $this->getExceptionMessage($this->thenException ?: $this->elseException);
2✔
78
    }
79

80
    private function getExceptionMessage(Exception $exception): string
2✔
81
    {
82
        return $exception instanceof ErrorRegistryExceptionInterface
2✔
83
            ? MessageFormatter::bulletList($exception->getErrors())
1✔
84
            : "\n    * " . str_replace("\n", "\n    ", $exception->getMessage());
2✔
85
    }
86
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc