test(Architecture): ensure all Unit and Integration tests declare covers()
Added a test to verify that every Unit and Integration test file contains a covers() declaration.
This commit is contained in:
parent
f8b5722a78
commit
41dbb04963
2 changed files with 25 additions and 2 deletions
10
TEST.md
10
TEST.md
|
|
@ -69,10 +69,16 @@ Chaque test rédigé dans ce projet doit obligatoirement respecter les principes
|
|||
- **Self-validating** (Auto-validant) : Le test passe ou échoue de façon binaire (`OK` / `FAIL`), sans nécessiter d'analyse manuelle des logs.
|
||||
- **Timely** (Opportun) : Les tests sont écrits au bon moment (en TDD ou simultanément avec le code de production).
|
||||
|
||||
### Pattern GWT (Given - When - Then)
|
||||
Tous les tests doivent utiliser des blocs de commentaires explicites `// GIVEN`, `// WHEN`, `// THEN` et déclarer un namespace sous `Tests\...` :
|
||||
### Declaration covers() et Pattern GWT
|
||||
Tous les tests unitaires (`tests/Unit`) et d'intégration (`tests/Integration`) doivent obligatoirement déclarer la classe ciblée via `covers(NomDeLaClasse::class);`, utiliser des blocs de commentaires explicites `// GIVEN`, `// WHEN`, `// THEN` et appartenir à un namespace `Tests\...` (vérifié par test d'architecture) :
|
||||
|
||||
```php
|
||||
namespace Tests\Unit\Domain\Models\ValueObjects;
|
||||
|
||||
use Domain\Models\ValueObjects\Entities\ArcadiaEmployeeId;
|
||||
|
||||
covers(ArcadiaEmployeeId::class);
|
||||
|
||||
it('validates an employee id', function (): void {
|
||||
// GIVEN
|
||||
$id = '12345678';
|
||||
|
|
|
|||
|
|
@ -81,4 +81,21 @@ describe('Coding Standards & Project Rules', function (): void {
|
|||
);
|
||||
}
|
||||
});
|
||||
|
||||
it('ensures every Unit and Integration test file contains a covers() call', function (): void {
|
||||
/** @var array<int, string> $testFiles */
|
||||
$testFiles = glob(base_path('{tests/Unit,tests/Integration}/{*,*/*,*/*/*,*/*/*/*}.php'), GLOB_BRACE);
|
||||
|
||||
foreach ($testFiles as $file) {
|
||||
if (preg_match('/Test\.php$/', basename($file)) !== 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$content = (string) file_get_contents($file);
|
||||
expect($content)->toMatch(
|
||||
'/^\s*covers\s*\(/m',
|
||||
"Test file [{$file}] is missing a covers(...) declaration."
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue