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.
|
- **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).
|
- **Timely** (Opportun) : Les tests sont écrits au bon moment (en TDD ou simultanément avec le code de production).
|
||||||
|
|
||||||
### Pattern GWT (Given - When - Then)
|
### Declaration covers() et Pattern GWT
|
||||||
Tous les tests doivent utiliser des blocs de commentaires explicites `// GIVEN`, `// WHEN`, `// THEN` et déclarer un namespace sous `Tests\...` :
|
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
|
```php
|
||||||
|
namespace Tests\Unit\Domain\Models\ValueObjects;
|
||||||
|
|
||||||
|
use Domain\Models\ValueObjects\Entities\ArcadiaEmployeeId;
|
||||||
|
|
||||||
|
covers(ArcadiaEmployeeId::class);
|
||||||
|
|
||||||
it('validates an employee id', function (): void {
|
it('validates an employee id', function (): void {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
$id = '12345678';
|
$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