1212namespace Symfony \UX \Dropzone \Tests ;
1313
1414use PHPUnit \Framework \TestCase ;
15+ use Symfony \Component \DependencyInjection \ContainerInterface ;
1516use Symfony \Component \Form \FormFactoryInterface ;
1617use Symfony \UX \Dropzone \Form \DropzoneType ;
1718use Symfony \UX \Dropzone \Tests \Kernel \TwigAppKernel ;
2425 */
2526class DropzoneTypeTest extends TestCase
2627{
27- public function testRenderForm ()
28+ private ContainerInterface $ kernel ;
29+
30+ public function setUp (): void
2831 {
2932 $ kernel = new TwigAppKernel ('test ' , true );
3033 $ kernel ->boot ();
31- $ container = $ kernel ->getContainer ()->get ('test.service_container ' );
3234
33- $ form = $ container ->get (FormFactoryInterface::class)->createBuilder ()
35+ $ this ->container = $ kernel ->getContainer ()->get ('test.service_container ' );
36+ }
37+
38+ public function testRenderForm ()
39+ {
40+ $ form = $ this ->container ->get (FormFactoryInterface::class)->createBuilder ()
3441 ->add ('photo ' , DropzoneType::class, ['attr ' => ['data-controller ' => 'mydropzone ' ]])
3542 ->getForm ()
3643 ;
3744
38- $ rendered = $ container ->get (Environment::class)->render ('dropzone_form.html.twig ' , ['form ' => $ form ->createView ()]);
45+ $ rendered = $ this -> container ->get (Environment::class)->render ('dropzone_form.html.twig ' , ['form ' => $ form ->createView ()]);
3946
4047 $ this ->assertSame (
4148 '<form name="form" method="post" enctype="multipart/form-data"><div id="form"><div><label for="form_photo" class="required">Photo</label><div class="dropzone-container" data-controller="mydropzone symfony--ux-dropzone--dropzone">
@@ -57,4 +64,34 @@ public function testRenderForm()
5764 str_replace (' > ' , '> ' , $ rendered )
5865 );
5966 }
67+
68+ public function testRenderFormWithMultiFileUploads (): void
69+ {
70+ $ form = $ this ->container ->get (FormFactoryInterface::class)->createBuilder ()
71+ ->add ('photo ' , DropzoneType::class, ['attr ' => ['data-controller ' => 'mydropzone ' ], 'multiple ' => true ])
72+ ->getForm ()
73+ ;
74+
75+ $ rendered = $ this ->container ->get (Environment::class)->render ('dropzone_form.html.twig ' , ['form ' => $ form ->createView ()]);
76+
77+ $ this ->assertSame (
78+ '<form name="form" method="post" enctype="multipart/form-data"><div id="form"><div><label for="form_photo" class="required">Photo</label><div class="dropzone-container" data-controller="mydropzone symfony--ux-dropzone--dropzone">
79+ <input type="file" id="form_photo" name="form[photo]" required="required" data-controller="" class="dropzone-input" data-symfony--ux-dropzone--dropzone-target="input" multiple />
80+
81+ <div class="dropzone-placeholder" data-symfony--ux-dropzone--dropzone-target="placeholder"></div>
82+
83+ <div class="dropzone-preview" data-symfony--ux-dropzone--dropzone-target="preview" style="display: none">
84+ <button class="dropzone-preview-button" type="button"
85+ data-symfony--ux-dropzone--dropzone-target="previewClearButton"></button>
86+
87+ <div class="dropzone-preview-image" style="display: none"
88+ data-symfony--ux-dropzone--dropzone-target="previewImage"></div>
89+
90+ <div data-symfony--ux-dropzone--dropzone-target="previewFilename" class="dropzone-preview-filename"></div>
91+ </div>
92+ </div></div></div></form>
93+ ' ,
94+ str_replace (' > ' , '> ' , $ rendered )
95+ );
96+ }
6097}
0 commit comments