47 lines
1.3 KiB
PHP
47 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Shared\DDD\Models\Entity;
|
|
use Shared\DDD\Ports\Repository;
|
|
|
|
describe('shared coding rules', function (): void {
|
|
arch('entities implements Entity')
|
|
->expect('Shared\\Domain\\Models\\Entities')
|
|
->toImplement(Entity::class);
|
|
|
|
arch('entities are immutable (disabled due to mock-final-classes conflict)')
|
|
->expect('Shared\\Entities')
|
|
->toBeReadonly()
|
|
->toBeFinal();
|
|
|
|
arch('valueObjects are immutable (disabled due to mock-final-classes conflict)')
|
|
->expect('Shared\\Models\\ValueObjects')
|
|
->toBeReadonly()
|
|
->toBeFinal();
|
|
|
|
arch('ports contains only interfaces')
|
|
->expect('Shared\\Ports')
|
|
->classes()
|
|
->toBeInterface();
|
|
|
|
arch('port Repositories extend Shared\DDD\Repository')
|
|
->expect('Shared\\Ports\\Repositories')
|
|
->toExtend(Repository::class);
|
|
|
|
arch('no Application classes are used in Shared')
|
|
->expect('Shared')
|
|
->not->toUse('Application');
|
|
|
|
arch('no Infrastructure classes are used in Shared')
|
|
->expect('Shared')
|
|
->not->toUse('Infrastructure');
|
|
|
|
arch('no Illuminate classes are used in Shared')
|
|
->expect('Shared')
|
|
->not->toUse('Illuminate');
|
|
|
|
arch('no Symfony components are used in Shared')
|
|
->expect('Shared')
|
|
->not->toUse('Symfony');
|
|
});
|