diff --git a/phpunit.xml b/phpunit.xml
index 50e1c960..adb5557d 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -10,6 +10,9 @@
./tests/Fileshare
+
+ tests/Arch.php
+
./packages/laravel-nami/tests/Unit
diff --git a/tests/Arch.php b/tests/Arch.php
new file mode 100644
index 00000000..7cb5f3b6
--- /dev/null
+++ b/tests/Arch.php
@@ -0,0 +1,15 @@
+expect('App')
+ ->not->toUse(['die', 'dd', 'dump']);
+
+
+arch()
+ ->expect(globArch('App\*\Models'))
+ ->toExtend('Illuminate\Database\Eloquent\Model')
+ ->toBeClasses();
+
+arch('app')
+ ->expect('App')
+ ->not->toHaveFileSystemPermissions('0777');
diff --git a/tests/Pest.php b/tests/Pest.php
index a97bd509..f6bdb97a 100644
--- a/tests/Pest.php
+++ b/tests/Pest.php
@@ -11,6 +11,8 @@
|
*/
+use Symfony\Component\Finder\Finder;
+
uses(
Tests\TestCase::class,
// Illuminate\Foundation\Testing\RefreshDatabase::class,
@@ -41,3 +43,12 @@ uses(
| global functions to help you to reduce the number of lines of code in your test files.
|
*/
+
+function globArch(string $pattern)
+{
+ $files = iterator_to_array(Finder::create()->files()->in(str($pattern)->replaceStart('App', './app')->replace('\\', '/'))->name('*.php'));
+
+ return collect($files)->map(
+ fn ($file) => str($file->getPathname())->replaceStart('./app', 'App')->replace('/', '\\')->replaceEnd('.php', '')->toString()
+ )->values()->toArray();
+}