Skip to content

Commit 8604b86

Browse files
authored
fix(view): discovery locations for view compiler (#1701)
1 parent 129fdd5 commit 8604b86

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Tempest\View\Initializers;
4+
5+
use Tempest\Container\Container;
6+
use Tempest\Container\Initializer;
7+
use Tempest\Container\Singleton;
8+
use Tempest\Core\Kernel;
9+
use Tempest\View\Attributes\AttributeFactory;
10+
use Tempest\View\Elements\ElementFactory;
11+
use Tempest\View\Parser\TempestViewCompiler;
12+
13+
final readonly class TempestViewCompilerInitializer implements Initializer
14+
{
15+
#[Singleton]
16+
public function initialize(Container $container): TempestViewCompiler
17+
{
18+
return new TempestViewCompiler(
19+
elementFactory: $container->get(ElementFactory::class),
20+
attributeFactory: $container->get(AttributeFactory::class),
21+
discoveryLocations: $container->get(Kernel::class)->discoveryLocations,
22+
);
23+
}
24+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div>Hi</div>

tests/Integration/View/TempestViewRendererTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44

55
namespace Tests\Tempest\Integration\View;
66

7+
use Tempest\Core\Kernel;
8+
use Tempest\Discovery\DiscoveryLocation;
79
use Tempest\Support\Html\HtmlString;
810
use Tempest\View\Exceptions\ElementWasInvalid;
11+
use Tempest\View\Renderers\TempestViewRenderer;
912
use Tempest\View\ViewCache;
1013
use Tests\Tempest\Fixtures\Controllers\RelativeViewController;
1114
use Tests\Tempest\Integration\FrameworkIntegrationTestCase;
@@ -865,4 +868,22 @@ public function test_zero_in_attribute(): void
865868

866869
$this->assertSnippetsMatch('<table border="0"></table>', $html);
867870
}
871+
872+
public function test_discovery_locations_are_passed_to_compiler(): void
873+
{
874+
/** @var \Tempest\Core\Kernel $kernel */
875+
$kernel = $this->get(Kernel::class);
876+
877+
$kernel->discoveryLocations[] = new DiscoveryLocation(
878+
'Tests\Tempest\Integration\View\Fixtures',
879+
__DIR__ . '/Fixtures',
880+
);
881+
882+
/** @var TempestViewRenderer $renderer */
883+
$renderer = $this->get(TempestViewRenderer::class);
884+
885+
$html = $renderer->render(view('discovered-view.view.php'));
886+
887+
$this->assertSnippetsMatch('<div>Hi</div>', $html);
888+
}
868889
}

0 commit comments

Comments
 (0)