Skip to content

Commit fe122ee

Browse files
kbondweaverryan
authored andcommitted
[TwigComponent] add test container bc layer & latest zenstruck/browser
1 parent 605a7bf commit fe122ee

File tree

7 files changed

+102
-100
lines changed

7 files changed

+102
-100
lines changed

src/LiveComponent/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"doctrine/doctrine-bundle": "^2.0",
4242
"doctrine/orm": "^2.7",
4343
"zenstruck/foundry": "^1.10",
44-
"zenstruck/browser": "^0.5.0"
44+
"zenstruck/browser": "^0.9.1"
4545
},
4646
"extra": {
4747
"branch-alias": {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Symfony\UX\LiveComponent\Tests;
4+
5+
use Symfony\Component\DependencyInjection\ContainerInterface;
6+
7+
/**
8+
* Enables using the getContainer() method in Symfony < 5.3.
9+
*
10+
* @author Kevin Bond <[email protected]>
11+
*/
12+
trait ContainerBC
13+
{
14+
protected static function getContainer(): ContainerInterface
15+
{
16+
if (!method_exists(parent::class, 'getContainer')) {
17+
if (!static::$booted) {
18+
static::bootKernel();
19+
}
20+
21+
return self::$container;
22+
}
23+
24+
return parent::getContainer();
25+
}
26+
}

src/LiveComponent/tests/Functional/EventListener/LiveComponentSubscriberTest.php

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
1515
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1616
use Symfony\UX\LiveComponent\LiveComponentHydrator;
17+
use Symfony\UX\LiveComponent\Tests\ContainerBC;
1718
use Symfony\UX\LiveComponent\Tests\Fixture\Component\Component1;
1819
use Symfony\UX\LiveComponent\Tests\Fixture\Component\Component2;
1920
use Symfony\UX\LiveComponent\Tests\Fixture\Entity\Entity1;
@@ -29,19 +30,18 @@
2930
*/
3031
final class LiveComponentSubscriberTest extends KernelTestCase
3132
{
33+
use ContainerBC;
3234
use Factories;
3335
use HasBrowser;
3436
use ResetDatabase;
3537

3638
public function testCanRenderComponentAsHtmlOrJson(): void
3739
{
38-
self::bootKernel();
39-
4040
/** @var LiveComponentHydrator $hydrator */
41-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
41+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
4242

4343
/** @var ComponentFactory $factory */
44-
$factory = self::$container->get('ux.twig_component.component_factory');
44+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
4545

4646
/** @var Component1 $component */
4747
$component = $factory->create('component1', [
@@ -80,13 +80,11 @@ public function testCanRenderComponentAsHtmlOrJson(): void
8080

8181
public function testCanExecuteComponentAction(): void
8282
{
83-
self::bootKernel();
84-
8583
/** @var LiveComponentHydrator $hydrator */
86-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
84+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
8785

8886
/** @var ComponentFactory $factory */
89-
$factory = self::$container->get('ux.twig_component.component_factory');
87+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
9088

9189
/** @var Component2 $component */
9290
$component = $factory->create('component2');
@@ -183,13 +181,11 @@ public function testInvalidCsrfTokenForComponentActionFails(): void
183181

184182
public function testBeforeReRenderHookOnlyExecutedDuringAjax(): void
185183
{
186-
self::bootKernel();
187-
188184
/** @var LiveComponentHydrator $hydrator */
189-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
185+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
190186

191187
/** @var ComponentFactory $factory */
192-
$factory = self::$container->get('ux.twig_component.component_factory');
188+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
193189

194190
/** @var Component2 $component */
195191
$component = $factory->create('component2');
@@ -208,13 +204,11 @@ public function testBeforeReRenderHookOnlyExecutedDuringAjax(): void
208204

209205
public function testCanRedirectFromComponentAction(): void
210206
{
211-
self::bootKernel();
212-
213207
/** @var LiveComponentHydrator $hydrator */
214-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
208+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
215209

216210
/** @var ComponentFactory $factory */
217-
$factory = self::$container->get('ux.twig_component.component_factory');
211+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
218212

219213
/** @var Component2 $component */
220214
$component = $factory->create('component2');

src/LiveComponent/tests/Integration/LiveComponentHydratorTest.php

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
1515
use Symfony\UX\LiveComponent\LiveComponentHydrator;
16+
use Symfony\UX\LiveComponent\Tests\ContainerBC;
1617
use Symfony\UX\LiveComponent\Tests\Fixture\Component\Component1;
1718
use Symfony\UX\LiveComponent\Tests\Fixture\Component\Component2;
1819
use Symfony\UX\LiveComponent\Tests\Fixture\Component\Component3;
@@ -27,18 +28,17 @@
2728
*/
2829
final class LiveComponentHydratorTest extends KernelTestCase
2930
{
31+
use ContainerBC;
3032
use Factories;
3133
use ResetDatabase;
3234

3335
public function testCanDehydrateAndHydrateLiveComponent(): void
3436
{
35-
self::bootKernel();
36-
3737
/** @var LiveComponentHydrator $hydrator */
38-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
38+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
3939

4040
/** @var ComponentFactory $factory */
41-
$factory = self::$container->get('ux.twig_component.component_factory');
41+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
4242

4343
/** @var Component1 $component */
4444
$component = $factory->create('component1', [
@@ -73,13 +73,11 @@ public function testCanDehydrateAndHydrateLiveComponent(): void
7373

7474
public function testCanModifyWritableProps(): void
7575
{
76-
self::bootKernel();
77-
7876
/** @var LiveComponentHydrator $hydrator */
79-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
77+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
8078

8179
/** @var ComponentFactory $factory */
82-
$factory = self::$container->get('ux.twig_component.component_factory');
80+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
8381

8482
/** @var Component1 $component */
8583
$component = $factory->create('component1', [
@@ -100,13 +98,11 @@ public function testCanModifyWritableProps(): void
10098

10199
public function testCannotModifyReadonlyProps(): void
102100
{
103-
self::bootKernel();
104-
105101
/** @var LiveComponentHydrator $hydrator */
106-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
102+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
107103

108104
/** @var ComponentFactory $factory */
109-
$factory = self::$container->get('ux.twig_component.component_factory');
105+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
110106

111107
/** @var Component1 $component */
112108
$component = $factory->create('component1', [
@@ -126,41 +122,35 @@ public function testCannotModifyReadonlyProps(): void
126122

127123
public function testHydrationFailsIfChecksumMissing(): void
128124
{
129-
self::bootKernel();
130-
131125
/** @var LiveComponentHydrator $hydrator */
132-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
126+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
133127

134128
/** @var ComponentFactory $factory */
135-
$factory = self::$container->get('ux.twig_component.component_factory');
129+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
136130

137131
$this->expectException(\RuntimeException::class);
138132
$hydrator->hydrate($factory->get('component1'), []);
139133
}
140134

141135
public function testHydrationFailsOnChecksumMismatch(): void
142136
{
143-
self::bootKernel();
144-
145137
/** @var LiveComponentHydrator $hydrator */
146-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
138+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
147139

148140
/** @var ComponentFactory $factory */
149-
$factory = self::$container->get('ux.twig_component.component_factory');
141+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
150142

151143
$this->expectException(\RuntimeException::class);
152144
$hydrator->hydrate($factory->get('component1'), ['_checksum' => 'invalid']);
153145
}
154146

155147
public function testPreDehydrateAndPostHydrateHooksCalled(): void
156148
{
157-
self::bootKernel();
158-
159149
/** @var LiveComponentHydrator $hydrator */
160-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
150+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
161151

162152
/** @var ComponentFactory $factory */
163-
$factory = self::$container->get('ux.twig_component.component_factory');
153+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
164154

165155
/** @var Component2 $component */
166156
$component = $factory->create('component2');
@@ -187,13 +177,11 @@ public function testPreDehydrateAndPostHydrateHooksCalled(): void
187177

188178
public function testDeletingEntityBetweenDehydrationAndHydrationSetsItToNull(): void
189179
{
190-
self::bootKernel();
191-
192180
/** @var LiveComponentHydrator $hydrator */
193-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
181+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
194182

195183
/** @var ComponentFactory $factory */
196-
$factory = self::$container->get('ux.twig_component.component_factory');
184+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
197185

198186
$entity = create(Entity1::class);
199187

@@ -225,13 +213,11 @@ public function testDeletingEntityBetweenDehydrationAndHydrationSetsItToNull():
225213

226214
public function testCorrectlyUsesCustomFrontendNameInDehydrateAndHydrate(): void
227215
{
228-
self::bootKernel();
229-
230216
/** @var LiveComponentHydrator $hydrator */
231-
$hydrator = self::$container->get('ux.live_component.component_hydrator');
217+
$hydrator = self::getContainer()->get('ux.live_component.component_hydrator');
232218

233219
/** @var ComponentFactory $factory */
234-
$factory = self::$container->get('ux.twig_component.component_factory');
220+
$factory = self::getContainer()->get('ux.twig_component.component_factory');
235221

236222
/** @var Component3 $component */
237223
$component = $factory->create('component3', ['prop1' => 'value1', 'prop2' => 'value2']);

src/TwigComponent/tests/Integration/ComponentExtensionTest.php

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
*/
2020
final class ComponentExtensionTest extends KernelTestCase
2121
{
22+
use ContainerBC;
23+
2224
public function testCanRenderComponent(): void
2325
{
24-
self::bootKernel();
25-
26-
$output = self::$container->get(Environment::class)->render('template_a.html.twig');
26+
$output = self::getContainer()->get(Environment::class)->render('template_a.html.twig');
2727

2828
$this->assertStringContainsString('propA: prop a value', $output);
2929
$this->assertStringContainsString('propB: prop b value', $output);
@@ -32,9 +32,7 @@ public function testCanRenderComponent(): void
3232

3333
public function testCanRenderTheSameComponentMultipleTimes(): void
3434
{
35-
self::bootKernel();
36-
37-
$output = self::$container->get(Environment::class)->render('template_b.html.twig');
35+
$output = self::getContainer()->get(Environment::class)->render('template_b.html.twig');
3836

3937
$this->assertStringContainsString('propA: prop a value 1', $output);
4038
$this->assertStringContainsString('propB: prop b value 1', $output);
@@ -45,18 +43,14 @@ public function testCanRenderTheSameComponentMultipleTimes(): void
4543

4644
public function testCanCustomizeTemplateWithAttribute(): void
4745
{
48-
self::bootKernel();
49-
50-
$output = self::$container->get(Environment::class)->render('template_b.html.twig');
46+
$output = self::getContainer()->get(Environment::class)->render('template_b.html.twig');
5147

5248
$this->assertStringContainsString('Custom template 1', $output);
5349
}
5450

5551
public function testCanCustomizeTemplateWithServiceTag(): void
5652
{
57-
self::bootKernel();
58-
59-
$output = self::$container->get(Environment::class)->render('template_c.html.twig');
53+
$output = self::getContainer()->get(Environment::class)->render('template_c.html.twig');
6054

6155
$this->assertStringContainsString('Custom template 2', $output);
6256
}

0 commit comments

Comments
 (0)