Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9f5ed0e

Browse files
committed
[TwigBridge] Add FormLayoutTestCase class
1 parent541e845 commit9f5ed0e

12 files changed

+282
-653
lines changed
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespaceSymfony\Bridge\Twig\Test;
13+
14+
useSymfony\Bridge\Twig\Form\TwigRendererEngine;
15+
useSymfony\Bridge\Twig\Test\Traits\RuntimeLoaderProvider;
16+
useSymfony\Component\Form\FormRenderer;
17+
useSymfony\Component\Form\FormRendererInterface;
18+
useSymfony\Component\Form\FormView;
19+
useSymfony\Component\Form\Test\FormIntegrationTestCase;
20+
useSymfony\Component\Security\Csrf\CsrfTokenManagerInterface;
21+
useTwig\Environment;
22+
useTwig\Loader\FilesystemLoader;
23+
24+
/**
25+
* @author Romain Monteil <monteil.romain@gmail.com>
26+
*/
27+
abstractclass FormLayoutTestCaseextends FormIntegrationTestCase
28+
{
29+
use RuntimeLoaderProvider;
30+
31+
protectedFormRendererInterface$renderer;
32+
33+
protectedfunctionsetUp():void
34+
{
35+
parent::setUp();
36+
37+
$loader =newFilesystemLoader($this->getTemplatePaths());
38+
39+
$environment =newEnvironment($loader, ['strict_variables' =>true]);
40+
$environment->setExtensions($this->getTwigExtensions());
41+
42+
foreach ($this->getTwigGlobals()as$name =>$value) {
43+
$environment->addGlobal($name,$value);
44+
}
45+
46+
$rendererEngine =newTwigRendererEngine($this->getThemes(),$environment);
47+
$this->renderer =newFormRenderer($rendererEngine,$this->createMock(CsrfTokenManagerInterface::class));
48+
$this->registerTwigRuntimeLoader($environment,$this->renderer);
49+
}
50+
51+
protectedfunctionassertMatchesXpath($html,$expression,$count =1):void
52+
{
53+
$dom =new \DOMDocument('UTF-8');
54+
55+
$html =preg_replace('/(<input [^>]+)(?<!\/)>/','$1/>',$html);
56+
57+
try {
58+
// Wrap in <root> node so we can load HTML with multiple tags at
59+
// the top level
60+
$dom->loadXML('<root>'.$html.'</root>');
61+
}catch (\Exception$e) {
62+
$this->fail(sprintf(
63+
"Failed loading HTML:\n\n%s\n\nError: %s",
64+
$html,
65+
$e->getMessage()
66+
));
67+
}
68+
$xpath =new \DOMXPath($dom);
69+
$nodeList =$xpath->evaluate('/root'.$expression);
70+
71+
if ($nodeList->length !=$count) {
72+
$dom->formatOutput =true;
73+
$this->fail(sprintf(
74+
"Failed asserting that\n\n%s\n\nmatches exactly %s. Matches %s in\n\n%s",
75+
$expression,
76+
1 ==$count ?'once' :$count.' times',
77+
1 ==$nodeList->length ?'once' :$nodeList->length.' times',
78+
// strip away <root> and </root>
79+
substr($dom->saveHTML(),6, -8)
80+
));
81+
}else {
82+
$this->addToAssertionCount(1);
83+
}
84+
}
85+
86+
abstractprotectedfunctiongetTemplatePaths():array;
87+
88+
abstractprotectedfunctiongetTwigExtensions():array;
89+
90+
protectedfunctiongetTwigGlobals():array
91+
{
92+
return [];
93+
}
94+
95+
abstractprotectedfunctiongetThemes():array;
96+
97+
protectedfunctionrenderForm(FormView$view,array$vars = []):string
98+
{
99+
return$this->renderer->renderBlock($view,'form',$vars);
100+
}
101+
102+
protectedfunctionrenderLabel(FormView$view,$label =null,array$vars = []):string
103+
{
104+
if (null !==$label) {
105+
$vars += ['label' =>$label];
106+
}
107+
108+
return$this->renderer->searchAndRenderBlock($view,'label',$vars);
109+
}
110+
111+
protectedfunctionrenderHelp(FormView$view):string
112+
{
113+
return$this->renderer->searchAndRenderBlock($view,'help');
114+
}
115+
116+
protectedfunctionrenderErrors(FormView$view):string
117+
{
118+
return$this->renderer->searchAndRenderBlock($view,'errors');
119+
}
120+
121+
protectedfunctionrenderWidget(FormView$view,array$vars = []):string
122+
{
123+
return$this->renderer->searchAndRenderBlock($view,'widget',$vars);
124+
}
125+
126+
protectedfunctionrenderRow(FormView$view,array$vars = []):string
127+
{
128+
return$this->renderer->searchAndRenderBlock($view,'row',$vars);
129+
}
130+
131+
protectedfunctionrenderRest(FormView$view,array$vars = []):string
132+
{
133+
return$this->renderer->searchAndRenderBlock($view,'rest',$vars);
134+
}
135+
136+
protectedfunctionrenderStart(FormView$view,array$vars = []):string
137+
{
138+
return$this->renderer->renderBlock($view,'form_start',$vars);
139+
}
140+
141+
protectedfunctionrenderEnd(FormView$view,array$vars = []):string
142+
{
143+
return$this->renderer->renderBlock($view,'form_end',$vars);
144+
}
145+
146+
protectedfunctionsetTheme(FormView$view,array$themes,$useDefaultThemes =true):void
147+
{
148+
$this->renderer->setTheme($view,$themes,$useDefaultThemes);
149+
}
150+
}

‎src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php‎renamed to ‎src/Symfony/Bridge/Twig/Test/Traits/RuntimeLoaderProvider.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespaceSymfony\Bridge\Twig\Tests\Extension;
12+
namespaceSymfony\Bridge\Twig\Test\Traits;
1313

1414
useSymfony\Component\Form\FormRenderer;
1515
useTwig\Environment;

‎src/Symfony/Bridge/Twig/Tests/Extension/AbstractLayoutTestCase.php‎

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@
1212
namespaceSymfony\Bridge\Twig\Tests\Extension;
1313

1414
usePHPUnit\Framework\MockObject\MockObject;
15+
useSymfony\Bridge\Twig\Test\FormLayoutTestCase;
1516
useSymfony\Component\Form\Extension\Core\Type\PercentType;
1617
useSymfony\Component\Form\Extension\Core\Type\SubmitType;
1718
useSymfony\Component\Form\Extension\Csrf\CsrfExtension;
1819
useSymfony\Component\Form\FormError;
1920
useSymfony\Component\Form\FormView;
20-
useSymfony\Component\Form\Test\FormIntegrationTestCase;
2121
useSymfony\Component\Form\Tests\VersionAwareTest;
2222
useSymfony\Component\Security\Csrf\CsrfTokenManagerInterface;
2323
useSymfony\Component\Translation\TranslatableMessage;
2424
useSymfony\Contracts\Translation\TranslatableInterface;
2525
useSymfony\Contracts\Translation\TranslatorInterface;
2626

27-
abstractclass AbstractLayoutTestCaseextendsFormIntegrationTestCase
27+
abstractclass AbstractLayoutTestCaseextendsFormLayoutTestCase
2828
{
2929
use VersionAwareTest;
3030

@@ -61,49 +61,6 @@ protected function tearDown(): void
6161
parent::tearDown();
6262
}
6363

64-
protectedfunctionassertXpathNodeValue(\DOMElement$element,$expression,$nodeValue)
65-
{
66-
$xpath =new \DOMXPath($element->ownerDocument);
67-
$nodeList =$xpath->evaluate($expression);
68-
$this->assertEquals(1,$nodeList->length);
69-
$this->assertEquals($nodeValue,$nodeList->item(0)->nodeValue);
70-
}
71-
72-
protectedfunctionassertMatchesXpath($html,$expression,$count =1)
73-
{
74-
$dom =new \DOMDocument('UTF-8');
75-
76-
$html =preg_replace('/(<input [^>]+)(?<!\/)>/','$1/>',$html);
77-
78-
try {
79-
// Wrap in <root> node so we can load HTML with multiple tags at
80-
// the top level
81-
$dom->loadXML('<root>'.$html.'</root>');
82-
}catch (\Exception$e) {
83-
$this->fail(sprintf(
84-
"Failed loading HTML:\n\n%s\n\nError: %s",
85-
$html,
86-
$e->getMessage()
87-
));
88-
}
89-
$xpath =new \DOMXPath($dom);
90-
$nodeList =$xpath->evaluate('/root'.$expression);
91-
92-
if ($nodeList->length !=$count) {
93-
$dom->formatOutput =true;
94-
$this->fail(sprintf(
95-
"Failed asserting that\n\n%s\n\nmatches exactly %s. Matches %s in\n\n%s",
96-
$expression,
97-
1 ==$count ?'once' :$count.' times',
98-
1 ==$nodeList->length ?'once' :$nodeList->length.' times',
99-
// strip away <root> and </root>
100-
substr($dom->saveHTML(),6, -8)
101-
));
102-
}else {
103-
$this->addToAssertionCount(1);
104-
}
105-
}
106-
10764
protectedfunctionassertWidgetMatchesXpath(FormView$view,array$vars,$xpath)
10865
{
10966
// include ampersands everywhere to validate escaping
@@ -125,29 +82,6 @@ protected function assertWidgetMatchesXpath(FormView $view, array $vars, $xpath)
12582
$this->assertMatchesXpath($html,$xpath);
12683
}
12784

128-
abstractprotectedfunctionrenderForm(FormView$view,array$vars = []);
129-
130-
abstractprotectedfunctionrenderLabel(FormView$view,$label =null,array$vars = []);
131-
132-
protectedfunctionrenderHelp(FormView$view)
133-
{
134-
$this->markTestSkipped(sprintf('%s::renderHelp() is not implemented.',static::class));
135-
}
136-
137-
abstractprotectedfunctionrenderErrors(FormView$view);
138-
139-
abstractprotectedfunctionrenderWidget(FormView$view,array$vars = []);
140-
141-
abstractprotectedfunctionrenderRow(FormView$view,array$vars = []);
142-
143-
abstractprotectedfunctionrenderRest(FormView$view,array$vars = []);
144-
145-
abstractprotectedfunctionrenderStart(FormView$view,array$vars = []);
146-
147-
abstractprotectedfunctionrenderEnd(FormView$view,array$vars = []);
148-
149-
abstractprotectedfunctionsetTheme(FormView$view,array$themes,$useDefaultThemes =true);
150-
15185
publicfunctiontestLabel()
15286
{
15387
$form =$this->factory->createNamed('name','Symfony\Component\Form\Extension\Core\Type\TextType');

‎src/Symfony/Bridge/Twig/Tests/Extension/FormExtensionBootstrap3HorizontalLayoutTest.php‎

Lines changed: 13 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -13,96 +13,35 @@
1313

1414
useSymfony\Bridge\Twig\Extension\FormExtension;
1515
useSymfony\Bridge\Twig\Extension\TranslationExtension;
16-
useSymfony\Bridge\Twig\Form\TwigRendererEngine;
1716
useSymfony\Bridge\Twig\Tests\Extension\Fixtures\StubTranslator;
18-
useSymfony\Component\Form\FormRenderer;
19-
useSymfony\Component\Form\FormView;
20-
useSymfony\Component\Security\Csrf\CsrfTokenManagerInterface;
21-
useTwig\Environment;
22-
useTwig\Loader\FilesystemLoader;
2317

2418
class FormExtensionBootstrap3HorizontalLayoutTestextends AbstractBootstrap3HorizontalLayoutTestCase
2519
{
26-
use RuntimeLoaderProvider;
27-
2820
protectedarray$testableFeatures = [
2921
'choice_attr',
3022
];
3123

32-
privateFormRenderer$renderer;
33-
34-
protectedfunctionsetUp():void
24+
protectedfunctiongetTemplatePaths():array
3525
{
36-
parent::setUp();
37-
38-
$loader =newFilesystemLoader([
26+
return [
3927
__DIR__.'/../../Resources/views/Form',
4028
__DIR__.'/Fixtures/templates/form',
41-
]);
42-
43-
$environment =newEnvironment($loader, ['strict_variables' =>true]);
44-
$environment->addExtension(newTranslationExtension(newStubTranslator()));
45-
$environment->addExtension(newFormExtension());
46-
47-
$rendererEngine =newTwigRendererEngine([
48-
'bootstrap_3_horizontal_layout.html.twig',
49-
'custom_widgets.html.twig',
50-
],$environment);
51-
$this->renderer =newFormRenderer($rendererEngine,$this->createMock(CsrfTokenManagerInterface::class));
52-
$this->registerTwigRuntimeLoader($environment,$this->renderer);
53-
}
54-
55-
protectedfunctionrenderForm(FormView$view,array$vars = [])
56-
{
57-
return$this->renderer->renderBlock($view,'form',$vars);
58-
}
59-
60-
protectedfunctionrenderLabel(FormView$view,$label =null,array$vars = [])
61-
{
62-
if (null !==$label) {
63-
$vars += ['label' =>$label];
64-
}
65-
66-
return$this->renderer->searchAndRenderBlock($view,'label',$vars);
67-
}
68-
69-
protectedfunctionrenderHelp(FormView$view)
70-
{
71-
return$this->renderer->searchAndRenderBlock($view,'help');
29+
];
7230
}
7331

74-
protectedfunctionrenderErrors(FormView$view)
32+
protectedfunctiongetTwigExtensions():array
7533
{
76-
return$this->renderer->searchAndRenderBlock($view,'errors');
34+
return [
35+
newTranslationExtension(newStubTranslator()),
36+
newFormExtension(),
37+
];
7738
}
7839

79-
protectedfunctionrenderWidget(FormView$view,array$vars = [])
40+
protectedfunctiongetThemes():array
8041
{
81-
return$this->renderer->searchAndRenderBlock($view,'widget',$vars);
82-
}
83-
84-
protectedfunctionrenderRow(FormView$view,array$vars = [])
85-
{
86-
return$this->renderer->searchAndRenderBlock($view,'row',$vars);
87-
}
88-
89-
protectedfunctionrenderRest(FormView$view,array$vars = [])
90-
{
91-
return$this->renderer->searchAndRenderBlock($view,'rest',$vars);
92-
}
93-
94-
protectedfunctionrenderStart(FormView$view,array$vars = [])
95-
{
96-
return$this->renderer->renderBlock($view,'form_start',$vars);
97-
}
98-
99-
protectedfunctionrenderEnd(FormView$view,array$vars = [])
100-
{
101-
return$this->renderer->renderBlock($view,'form_end',$vars);
102-
}
103-
104-
protectedfunctionsetTheme(FormView$view,array$themes,$useDefaultThemes =true)
105-
{
106-
$this->renderer->setTheme($view,$themes,$useDefaultThemes);
42+
return [
43+
'bootstrap_3_horizontal_layout.html.twig',
44+
'custom_widgets.html.twig',
45+
];
10746
}
10847
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp