diff --git a/packages/framework/tests/Unit/DropdownNavItemTest.php b/packages/framework/tests/Unit/DropdownNavItemTest.php index 884045acb46..a26947f836f 100644 --- a/packages/framework/tests/Unit/DropdownNavItemTest.php +++ b/packages/framework/tests/Unit/DropdownNavItemTest.php @@ -8,8 +8,6 @@ use Hyde\Framework\Features\Navigation\DropdownNavItem; use Hyde\Framework\Features\Navigation\NavItem; use Hyde\Pages\MarkdownPage; -use Hyde\Support\Facades\Render; -use Hyde\Support\Models\RenderData; use Hyde\Support\Models\Route; use Hyde\Testing\UnitTestCase; @@ -20,17 +18,7 @@ class DropdownNavItemTest extends UnitTestCase { protected static bool $needsKernel = true; protected static bool $needsConfig = true; - - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - Render::swap(new RenderData()); - } - - public static function tearDownAfterClass(): void - { - Render::swap(new RenderData()); - } + protected static bool $needsRender = true; public function testConstruct() { diff --git a/packages/framework/tests/Unit/Facades/RouteFacadeTest.php b/packages/framework/tests/Unit/Facades/RouteFacadeTest.php index a63a9b7669f..246a9e1babb 100644 --- a/packages/framework/tests/Unit/Facades/RouteFacadeTest.php +++ b/packages/framework/tests/Unit/Facades/RouteFacadeTest.php @@ -10,8 +10,6 @@ use Hyde\Pages\BladePage; use Hyde\Pages\MarkdownPage; use Hyde\Pages\MarkdownPost; -use Hyde\Support\Facades\Render; -use Hyde\Support\Models\RenderData; use Hyde\Support\Models\Route; use Hyde\Testing\UnitTestCase; @@ -61,20 +59,16 @@ public function testCurrentReturnsCurrentRoute() { $route = new Route(new MarkdownPage('foo')); - Render::shouldReceive('getRoute')->andReturn($route); + self::mockRender()->shouldReceive('getRoute')->andReturn($route); $this->assertSame($route, Routes::current()); - - $this->resetMockInstance(); } public function testCurrentReturnsNullIfRouteIsNotFound() { - Render::shouldReceive('getRoute')->andReturn(null); + self::mockRender()->shouldReceive('getRoute')->andReturn(null); $this->assertNull(Routes::current()); - - $this->resetMockInstance(); } public function testExistsForExistingRoute() @@ -86,9 +80,4 @@ public function testExistsForNonExistingRoute() { $this->assertFalse(Routes::exists('not-found')); } - - protected function resetMockInstance(): void - { - Render::swap(new RenderData()); - } } diff --git a/packages/framework/tests/Unit/Foundation/HyperlinkFileHelperRelativeLinkTest.php b/packages/framework/tests/Unit/Foundation/HyperlinkFileHelperRelativeLinkTest.php index 5d684061b4e..4aa4af46074 100644 --- a/packages/framework/tests/Unit/Foundation/HyperlinkFileHelperRelativeLinkTest.php +++ b/packages/framework/tests/Unit/Foundation/HyperlinkFileHelperRelativeLinkTest.php @@ -5,8 +5,6 @@ namespace Hyde\Framework\Testing\Unit\Foundation; use Hyde\Hyde; -use Hyde\Support\Facades\Render; -use Hyde\Support\Models\RenderData; use Hyde\Testing\InteractsWithPages; use Hyde\Testing\UnitTestCase; use Illuminate\Support\Facades\View; @@ -22,10 +20,10 @@ class HyperlinkFileHelperRelativeLinkTest extends UnitTestCase protected static bool $needsKernel = true; protected static bool $needsConfig = true; + protected static bool $needsRender = true; protected function setUp(): void { - Render::swap(new RenderData()); View::swap(Mockery::mock(Factory::class)->makePartial()); } diff --git a/packages/framework/tests/Unit/NavItemIsCurrentHelperTest.php b/packages/framework/tests/Unit/NavItemIsCurrentHelperTest.php index 3f83394b217..d3cc16aa15e 100644 --- a/packages/framework/tests/Unit/NavItemIsCurrentHelperTest.php +++ b/packages/framework/tests/Unit/NavItemIsCurrentHelperTest.php @@ -23,11 +23,6 @@ class NavItemIsCurrentHelperTest extends UnitTestCase protected static bool $needsKernel = true; protected static bool $needsConfig = true; - protected function tearDown(): void - { - Render::swap(new RenderData()); - } - public function testIsCurrent() { $this->mockRenderData($this->makeRoute('foo')); diff --git a/packages/framework/tests/Unit/RouteTest.php b/packages/framework/tests/Unit/RouteTest.php index 35d2dae4427..c5157cf024f 100644 --- a/packages/framework/tests/Unit/RouteTest.php +++ b/packages/framework/tests/Unit/RouteTest.php @@ -6,8 +6,6 @@ use Hyde\Hyde; use Hyde\Pages\MarkdownPage; -use Hyde\Support\Facades\Render; -use Hyde\Support\Models\RenderData; use Hyde\Support\Models\Route; use Hyde\Support\Models\RouteKey; use Hyde\Testing\UnitTestCase; @@ -17,11 +15,12 @@ */ class RouteTest extends UnitTestCase { + protected static bool $needsKernel = true; + protected static bool $needsConfig = true; + protected function setUp(): void { - self::setupKernel(); - self::mockConfig(); - Render::swap(new RenderData()); + self::mockRender(); } public function testConstructorCreatesRouteFromPageModel() @@ -80,7 +79,7 @@ public function testGetLinkReturnsCorrectPathForNestedPages() public function testGetLinkReturnsCorrectPathForNestedCurrentPage() { $route = new Route(new MarkdownPage('foo')); - Render::shouldReceive('getRouteKey')->andReturn('foo/bar'); + self::mockCurrentRouteKey('foo/bar'); $this->assertSame(Hyde::relativeLink($route->getOutputPath()), $route->getLink()); $this->assertSame('../foo.html', $route->getLink()); diff --git a/packages/hyde/tests/DefaultContentTest.php b/packages/hyde/tests/DefaultContentTest.php index 0da224d54c6..f632c9c433a 100644 --- a/packages/hyde/tests/DefaultContentTest.php +++ b/packages/hyde/tests/DefaultContentTest.php @@ -2,10 +2,9 @@ declare(strict_types=1); -namespace Hyde\Testing\Hyde; +namespace Hyde\Testing; use Hyde\Hyde; -use Hyde\Testing\UnitTestCase; class DefaultContentTest extends UnitTestCase { diff --git a/packages/hyde/tests/ExampleTest.php b/packages/hyde/tests/ExampleTest.php index ebccc2b91e9..ca67cfc90a5 100644 --- a/packages/hyde/tests/ExampleTest.php +++ b/packages/hyde/tests/ExampleTest.php @@ -2,9 +2,7 @@ declare(strict_types=1); -namespace Hyde\Testing\Hyde; - -use Hyde\Testing\UnitTestCase; +namespace Hyde\Testing; class ExampleTest extends UnitTestCase { diff --git a/packages/hyde/tests/HydeCLITest.php b/packages/hyde/tests/HydeCLITest.php index bcf5e86cd27..b72eea310a2 100644 --- a/packages/hyde/tests/HydeCLITest.php +++ b/packages/hyde/tests/HydeCLITest.php @@ -2,9 +2,7 @@ declare(strict_types=1); -namespace Hyde\Testing\Hyde; - -use Hyde\Testing\TestCase; +namespace Hyde\Testing; class HydeCLITest extends TestCase { diff --git a/packages/hyde/tests/StaticSiteBuilderTest.php b/packages/hyde/tests/StaticSiteBuilderTest.php index 41c73a302c8..cb4d11eaef9 100644 --- a/packages/hyde/tests/StaticSiteBuilderTest.php +++ b/packages/hyde/tests/StaticSiteBuilderTest.php @@ -2,10 +2,9 @@ declare(strict_types=1); -namespace Hyde\Testing\Hyde; +namespace Hyde\Testing; use Hyde\Hyde; -use Hyde\Testing\TestCase; use Illuminate\Support\Facades\File; class StaticSiteBuilderTest extends TestCase diff --git a/packages/testing/src/Common/BaseHydePageUnitTest.php b/packages/testing/src/Common/BaseHydePageUnitTest.php index 645ef738efa..a02b84be84f 100644 --- a/packages/testing/src/Common/BaseHydePageUnitTest.php +++ b/packages/testing/src/Common/BaseHydePageUnitTest.php @@ -8,7 +8,6 @@ use Illuminate\View\Factory; use Hyde\Testing\UnitTestCase; use Hyde\Support\Facades\Render; -use Hyde\Support\Models\RenderData; use Illuminate\Support\Facades\View; use Hyde\Testing\CreatesTemporaryFiles; @@ -27,6 +26,7 @@ protected function setUp(): void { self::setupKernel(); self::mockConfig(); + self::mockRender(); View::swap($mock = Mockery::mock(Factory::class, [ 'make' => Mockery::mock(Factory::class, [ @@ -39,8 +39,6 @@ protected function setUp(): void ])); app()->bind(\Illuminate\Contracts\View\Factory::class, fn () => $mock); app()->bind('view', fn () => $mock); - - Render::swap(new RenderData()); } protected function tearDown(): void diff --git a/packages/testing/src/UnitTestCase.php b/packages/testing/src/UnitTestCase.php index 23e6083a903..764334bec74 100644 --- a/packages/testing/src/UnitTestCase.php +++ b/packages/testing/src/UnitTestCase.php @@ -5,7 +5,9 @@ namespace Hyde\Testing; use Hyde\Foundation\HydeKernel; +use Hyde\Support\Facades\Render; use Illuminate\Config\Repository; +use Hyde\Support\Models\RenderData; use Illuminate\Support\Facades\Config; use PHPUnit\Framework\TestCase as BaseTestCase; @@ -15,6 +17,7 @@ abstract class UnitTestCase extends BaseTestCase protected static bool $needsKernel = false; protected static bool $needsConfig = false; + protected static bool $needsRender = false; protected static function needsKernel(): void { @@ -32,6 +35,10 @@ public static function setUpBeforeClass(): void if (static::$needsConfig) { self::mockConfig(); } + + if (static::$needsRender) { + self::mockRender(); + } } protected static function setupKernel(): void @@ -45,6 +52,18 @@ protected static function resetKernel(): void HydeKernel::setInstance(new HydeKernel()); } + protected static function mockRender(): Render + { + Render::swap(new RenderData()); + + return new Render(); + } + + protected static function mockCurrentRouteKey(?string $routeKey = null): void + { + self::mockRender()->shouldReceive('getRouteKey')->andReturn($routeKey); + } + protected static function mockConfig(array $items = []): void { app()->bind('config', fn (): Repository => new Repository($items));