From 9cabfd82eb8715c658dd88cc4f6f7787e018359d Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 12 Apr 2024 10:09:25 +0100 Subject: [PATCH 1/6] Move `AddonTestCase` into `Statamic\Testing` namespace --- src/{Extend => Testing}/AddonTestCase.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename src/{Extend => Testing}/AddonTestCase.php (97%) diff --git a/src/Extend/AddonTestCase.php b/src/Testing/AddonTestCase.php similarity index 97% rename from src/Extend/AddonTestCase.php rename to src/Testing/AddonTestCase.php index 6cf294aa467..13af6629691 100644 --- a/src/Extend/AddonTestCase.php +++ b/src/Testing/AddonTestCase.php @@ -1,11 +1,12 @@ Date: Fri, 12 Apr 2024 12:44:38 +0100 Subject: [PATCH 2/6] Move `PreventSavingStacheItemsToDisk` to `Statamic\Testing` namespace --- src/Testing/AddonTestCase.php | 22 ++++++++++++++ .../PreventSavingStacheItemsToDisk.php | 29 +++++++++++++++++++ tests/PreventSavingStacheItemsToDisk.php | 25 ++-------------- tests/TestCase.php | 1 + 4 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 src/Testing/Concerns/PreventSavingStacheItemsToDisk.php diff --git a/src/Testing/AddonTestCase.php b/src/Testing/AddonTestCase.php index 13af6629691..f9823786d16 100644 --- a/src/Testing/AddonTestCase.php +++ b/src/Testing/AddonTestCase.php @@ -9,6 +9,8 @@ use Statamic\Extend\Manifest; use Statamic\Providers\StatamicServiceProvider; use Statamic\Statamic; +use Statamic\Testing\Concerns\PreventSavingStacheItemsToDisk; +use Illuminate\Support\Str; abstract class AddonTestCase extends OrchestraTestCase { @@ -21,6 +23,15 @@ protected function setUp(): void $this->withoutMix(); $this->withoutVite(); + $uses = array_flip(class_uses_recursive(static::class)); + + if (isset($uses[PreventSavingStacheItemsToDisk::class])) { + $reflection = new ReflectionClass($this); + $this->fakeStacheDirectory = Str::before(dirname($reflection->getFileName()), '/tests') . '/tests/__fixtures__/dev-null'; + + $this->preventSavingStacheItemsToDisk(); + } + Version::shouldReceive('get')->zeroOrMoreTimes()->andReturn(Composer::create(__DIR__.'/../')->installedVersion(Statamic::PACKAGE)); $this->addToAssertionCount(-1); @@ -28,6 +39,17 @@ protected function setUp(): void $this->addToAssertionCount(-1); // Dont want to assert this } + public function tearDown(): void + { + $uses = array_flip(class_uses_recursive(static::class)); + + if (isset($uses[PreventSavingStacheItemsToDisk::class])) { + $this->deleteFakeStacheDirectory(); + } + + parent::tearDown(); + } + protected function getPackageProviders($app) { $serviceProviders = [ diff --git a/src/Testing/Concerns/PreventSavingStacheItemsToDisk.php b/src/Testing/Concerns/PreventSavingStacheItemsToDisk.php new file mode 100644 index 00000000000..a08dd657cf2 --- /dev/null +++ b/src/Testing/Concerns/PreventSavingStacheItemsToDisk.php @@ -0,0 +1,29 @@ +fakeStacheDirectory = Path::tidy($this->fakeStacheDirectory); + + Stache::stores()->each(function ($store) { + $dir = Path::tidy(Str::before($this->fakeStacheDirectory, '/dev-null')); + $relative = Str::after(Str::after($store->directory(), $dir), '/'); + $store->directory($this->fakeStacheDirectory.'/'.$relative); + }); + } + + protected function deleteFakeStacheDirectory(): void + { + app('files')->deleteDirectory($this->fakeStacheDirectory); + + mkdir($this->fakeStacheDirectory); + touch($this->fakeStacheDirectory.'/.gitkeep'); + } +} diff --git a/tests/PreventSavingStacheItemsToDisk.php b/tests/PreventSavingStacheItemsToDisk.php index 375a903eedc..e7bf9556b80 100644 --- a/tests/PreventSavingStacheItemsToDisk.php +++ b/tests/PreventSavingStacheItemsToDisk.php @@ -2,30 +2,9 @@ namespace Tests; -use Statamic\Facades\Path; -use Statamic\Facades\Stache; -use Statamic\Support\Str; +use Statamic\Testing\Concerns\PreventSavingStacheItemsToDisk as BasePreventSavingStacheItemsToDisk; trait PreventSavingStacheItemsToDisk { - protected $fakeStacheDirectory = __DIR__.'/__fixtures__/dev-null'; - - protected function preventSavingStacheItemsToDisk() - { - $this->fakeStacheDirectory = Path::tidy($this->fakeStacheDirectory); - - Stache::stores()->each(function ($store) { - $dir = Path::tidy(__DIR__.'/__fixtures__'); - $relative = Str::after(Str::after($store->directory(), $dir), '/'); - $store->directory($this->fakeStacheDirectory.'/'.$relative); - }); - } - - protected function deleteFakeStacheDirectory() - { - app('files')->deleteDirectory($this->fakeStacheDirectory); - - mkdir($this->fakeStacheDirectory); - touch($this->fakeStacheDirectory.'/.gitkeep'); - } + use BasePreventSavingStacheItemsToDisk; } diff --git a/tests/TestCase.php b/tests/TestCase.php index fea6683d98c..ed04a38a93a 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -16,6 +16,7 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase protected $shouldFakeVersion = true; protected $shouldPreventNavBeingBuilt = true; + protected $fakeStacheDirectory = __DIR__.'/__fixtures__/dev-null'; protected function setUp(): void { From cb01264911887f896e53f13ca36b515888e032d4 Mon Sep 17 00:00:00 2001 From: duncanmcclean Date: Fri, 12 Apr 2024 11:46:19 +0000 Subject: [PATCH 3/6] Fix styling --- src/Testing/AddonTestCase.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Testing/AddonTestCase.php b/src/Testing/AddonTestCase.php index f9823786d16..72aef674e7f 100644 --- a/src/Testing/AddonTestCase.php +++ b/src/Testing/AddonTestCase.php @@ -3,6 +3,7 @@ namespace Statamic\Testing; use Facades\Statamic\Version; +use Illuminate\Support\Str; use Orchestra\Testbench\TestCase as OrchestraTestCase; use ReflectionClass; use Statamic\Console\Processes\Composer; @@ -10,7 +11,6 @@ use Statamic\Providers\StatamicServiceProvider; use Statamic\Statamic; use Statamic\Testing\Concerns\PreventSavingStacheItemsToDisk; -use Illuminate\Support\Str; abstract class AddonTestCase extends OrchestraTestCase { @@ -27,7 +27,7 @@ protected function setUp(): void if (isset($uses[PreventSavingStacheItemsToDisk::class])) { $reflection = new ReflectionClass($this); - $this->fakeStacheDirectory = Str::before(dirname($reflection->getFileName()), '/tests') . '/tests/__fixtures__/dev-null'; + $this->fakeStacheDirectory = Str::before(dirname($reflection->getFileName()), '/tests').'/tests/__fixtures__/dev-null'; $this->preventSavingStacheItemsToDisk(); } From d2a44b35f6263b1bc28be0816fccf087c1f07218 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 12 Apr 2024 12:46:35 +0100 Subject: [PATCH 4/6] Update `AddonTestCase` in our test case stub --- src/Console/Commands/stubs/addon/TestCase.php.stub | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Console/Commands/stubs/addon/TestCase.php.stub b/src/Console/Commands/stubs/addon/TestCase.php.stub index 14d8bbb5689..d8047890c7d 100644 --- a/src/Console/Commands/stubs/addon/TestCase.php.stub +++ b/src/Console/Commands/stubs/addon/TestCase.php.stub @@ -3,7 +3,7 @@ namespace {{ namespace }}\Tests; use {{ namespace }}\ServiceProvider; -use Statamic\Extend\AddonTestCase; +use Statamic\Testing\AddonTestCase; abstract class TestCase extends AddonTestCase { From c0d5f1f9ef4ab0fccacaa8447efe4befd57978a6 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 12 Apr 2024 14:53:40 +0100 Subject: [PATCH 5/6] Rename trait --- src/Testing/AddonTestCase.php | 4 ++-- ...cheItemsToDisk.php => PreventsSavingStacheItemsToDisk.php} | 2 +- tests/PreventSavingStacheItemsToDisk.php | 4 ++-- tests/TestCase.php | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename src/Testing/Concerns/{PreventSavingStacheItemsToDisk.php => PreventsSavingStacheItemsToDisk.php} (95%) diff --git a/src/Testing/AddonTestCase.php b/src/Testing/AddonTestCase.php index 72aef674e7f..f62f6643d69 100644 --- a/src/Testing/AddonTestCase.php +++ b/src/Testing/AddonTestCase.php @@ -10,7 +10,7 @@ use Statamic\Extend\Manifest; use Statamic\Providers\StatamicServiceProvider; use Statamic\Statamic; -use Statamic\Testing\Concerns\PreventSavingStacheItemsToDisk; +use Statamic\Testing\Concerns\PreventsSavingStacheItemsToDisk; abstract class AddonTestCase extends OrchestraTestCase { @@ -25,7 +25,7 @@ protected function setUp(): void $uses = array_flip(class_uses_recursive(static::class)); - if (isset($uses[PreventSavingStacheItemsToDisk::class])) { + if (isset($uses[PreventsSavingStacheItemsToDisk::class])) { $reflection = new ReflectionClass($this); $this->fakeStacheDirectory = Str::before(dirname($reflection->getFileName()), '/tests').'/tests/__fixtures__/dev-null'; diff --git a/src/Testing/Concerns/PreventSavingStacheItemsToDisk.php b/src/Testing/Concerns/PreventsSavingStacheItemsToDisk.php similarity index 95% rename from src/Testing/Concerns/PreventSavingStacheItemsToDisk.php rename to src/Testing/Concerns/PreventsSavingStacheItemsToDisk.php index a08dd657cf2..0e921140c6f 100644 --- a/src/Testing/Concerns/PreventSavingStacheItemsToDisk.php +++ b/src/Testing/Concerns/PreventsSavingStacheItemsToDisk.php @@ -6,7 +6,7 @@ use Statamic\Facades\Stache; use Statamic\Support\Str; -trait PreventSavingStacheItemsToDisk +trait PreventsSavingStacheItemsToDisk { protected function preventSavingStacheItemsToDisk(): void { diff --git a/tests/PreventSavingStacheItemsToDisk.php b/tests/PreventSavingStacheItemsToDisk.php index e7bf9556b80..117d3b77cc5 100644 --- a/tests/PreventSavingStacheItemsToDisk.php +++ b/tests/PreventSavingStacheItemsToDisk.php @@ -2,9 +2,9 @@ namespace Tests; -use Statamic\Testing\Concerns\PreventSavingStacheItemsToDisk as BasePreventSavingStacheItemsToDisk; +use Statamic\Testing\Concerns\PreventsSavingStacheItemsToDisk as BasePreventsSavingStacheItemsToDisk; trait PreventSavingStacheItemsToDisk { - use BasePreventSavingStacheItemsToDisk; + use BasePreventsSavingStacheItemsToDisk; } diff --git a/tests/TestCase.php b/tests/TestCase.php index ed04a38a93a..e0daec1d753 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -26,7 +26,7 @@ protected function setUp(): void $uses = array_flip(class_uses_recursive(static::class)); - if (isset($uses[PreventSavingStacheItemsToDisk::class])) { + if (isset($uses[PreventsSavingStacheItemsToDisk::class])) { $this->preventSavingStacheItemsToDisk(); } From 4ded2242e157993b3299f6d864df480bca3e1512 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 12 Apr 2024 14:56:21 +0100 Subject: [PATCH 6/6] this should stay as it was --- tests/TestCase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TestCase.php b/tests/TestCase.php index e0daec1d753..ed04a38a93a 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -26,7 +26,7 @@ protected function setUp(): void $uses = array_flip(class_uses_recursive(static::class)); - if (isset($uses[PreventsSavingStacheItemsToDisk::class])) { + if (isset($uses[PreventSavingStacheItemsToDisk::class])) { $this->preventSavingStacheItemsToDisk(); }