Files
InvoiceShelf/tests/Unit/Architecture/DomainArchitectureTest.php
T
Darko Gjorgjijoski 5ef7804e60 refactor: adopt modular domain architecture (#747)
* refactor: stabilize model identities for domain migration

* refactor: extract module platform context

* refactor: assign models to domain contexts

* refactor: extract ai platform context

* refactor: extract storage platform context

* refactor: extract mail platform context

* refactor: extract pdf platform context

* refactor: extract operations platform context

* refactor: move installation into operations platform

* refactor: extract money domain context

* refactor: extract taxation domain context

* refactor: extract catalog domain context

* refactor: extract metadata domain context

* refactor: extract reporting domain context

* refactor: extract purchases domain context

* refactor: extract receivables domain context

* refactor: extract accounts domain context

* refactor: complete reporting statement boundary

* refactor: extract contacts domain context

* refactor: extract sales domain context

* refactor: remove legacy application layers

* fix: migrate legacy bouncer role identities
2026-08-05 17:40:03 +02:00

67 lines
1.7 KiB
PHP

<?php
/**
* @return list<string>
*/
function phpFilesUnder(string $directory): array
{
if (! is_dir($directory)) {
return [];
}
$files = [];
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
foreach ($iterator as $file) {
if ($file->isFile() && $file->getExtension() === 'php') {
$files[] = $file->getPathname();
}
}
return $files;
}
test('domain code does not depend on legacy service or controller layers', function () {
$files = phpFilesUnder(app_path('Domains'));
expect($files)->toBeArray();
foreach ($files as $file) {
$source = file_get_contents($file);
expect($source)->not->toContain('App\\Http\\Controllers')
->not->toContain('App\\Services');
}
});
test('platform code does not depend on legacy controllers', function () {
foreach (phpFilesUnder(app_path('Platform')) as $file) {
expect(file_get_contents($file))->not->toContain('App\\Http\\Controllers');
}
});
test('legacy application layer directories contain no php classes', function () {
$legacyDirectories = [
'Console/Commands',
'Http/Controllers',
'Http/Requests',
'Http/Resources',
'Jobs',
'Mail',
'Models',
'Policies',
'Services',
'Traits',
];
foreach ($legacyDirectories as $directory) {
expect(phpFilesUnder(app_path($directory)))->toBe([]);
}
});
test('support remains independent of domains', function () {
foreach (phpFilesUnder(app_path('Support')) as $file) {
expect(file_get_contents($file))->not->toContain('App\\Domains');
}
});