mirror of
https://github.com/Respect/Validation.git
synced 2026-03-15 14:55:44 +01:00
I ran the `bin/console spdx --fix` with different strategies for different files. For most of the core classes, since they've been drastically rebuilt, I've run it with the `git-blame` strategy, for for the `src/Validators`, in which the API changed completely but the logic remains the same, I use the `git-log` strategy.
84 lines
2.7 KiB
PHP
84 lines
2.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* SPDX-License-Identifier: MIT
|
|
* SPDX-FileCopyrightText: (c) Respect Project Contributors
|
|
* SPDX-FileContributor: Alexandre Gomes Gaigalas <alganet@gmail.com>
|
|
* SPDX-FileContributor: Henrique Moody <henriquemoody@gmail.com>
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Respect\Validation\Exceptions\ValidationException;
|
|
use Respect\Validation\ResultQuery;
|
|
use Respect\Validation\Test\Builders\ResultBuilder;
|
|
use Respect\Validation\Test\Message\TestingArrayFormatter;
|
|
use Respect\Validation\Test\Message\TestingMessageRenderer;
|
|
use Respect\Validation\Test\Message\TestingStringFormatter;
|
|
use Respect\Validation\Test\Stubs\MyValidator;
|
|
|
|
$resultQuery = new ResultQuery(
|
|
(new ResultBuilder())->build(),
|
|
new TestingMessageRenderer(),
|
|
new TestingStringFormatter(),
|
|
new TestingStringFormatter(),
|
|
new TestingArrayFormatter(),
|
|
[],
|
|
);
|
|
|
|
test('Should overwrite file and line in the Validator class', function (): void {
|
|
try {
|
|
v::intType()->assert('string');
|
|
} catch (ValidationException $e) {
|
|
expect($e->getFile())->toBe(__FILE__);
|
|
expect($e->getLine())->toBe(__LINE__ - 3);
|
|
}
|
|
});
|
|
|
|
test('Should overwrite file and line in ValidationException', function (): void {
|
|
try {
|
|
MyValidator::assertIntType('string');
|
|
} catch (ValidationException $e) {
|
|
expect($e->getFile())->toBe(__FILE__);
|
|
expect($e->getLine())->toBe(__LINE__ - 3);
|
|
}
|
|
});
|
|
|
|
test('Should not overwrite file and line when created manually', function () use ($resultQuery): void {
|
|
try {
|
|
throw new ValidationException('message', $resultQuery);
|
|
} catch (ValidationException $e) {
|
|
expect($e->getFile())->toBe(__FILE__);
|
|
expect($e->getLine())->toBe(__LINE__ - 3);
|
|
}
|
|
});
|
|
|
|
|
|
test('Should not overwrite file and line when file cannot be ever traced', function () use ($resultQuery): void {
|
|
try {
|
|
throw new ValidationException('message', $resultQuery, '/tmp/unknown');
|
|
} catch (ValidationException $e) {
|
|
expect($e->getFile())->toBe(__FILE__);
|
|
expect($e->getLine())->toBe(__LINE__ - 3);
|
|
}
|
|
});
|
|
|
|
|
|
test('Should go not overwrite file and line when it runs out of choices', function () use ($resultQuery): void {
|
|
try {
|
|
$trace = array_unique(
|
|
array_filter(
|
|
array_map(
|
|
fn($trace) => $trace['file'] ?? null,
|
|
debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),
|
|
),
|
|
),
|
|
);
|
|
$trace[] = __FILE__;
|
|
|
|
throw new ValidationException('message', $resultQuery, ...$trace);
|
|
} catch (ValidationException $e) {
|
|
expect($e->getFile())->toBe(__FILE__);
|
|
expect($e->getLine())->toBe(__LINE__ - 3);
|
|
}
|
|
});
|