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+ /**
29+ * @var ContainerInterface
30+ */
31+ private $ container ;
32+
33+ protected function setUp (): void
2834 {
2935 $ kernel = new TwigAppKernel ('test ' , true );
3036 $ kernel ->boot ();
31- $ container = $ kernel ->getContainer ()->get ('test.service_container ' );
3237
33- $ form = $ container ->get (FormFactoryInterface::class)->createBuilder ()
38+ $ this ->container = $ kernel ->getContainer ()->get ('test.service_container ' );
39+ }
40+
41+ public function testRenderForm ()
42+ {
43+ $ form = $ this ->container ->get (FormFactoryInterface::class)->createBuilder ()
3444 ->add ('photo ' , DropzoneType::class, ['attr ' => ['data-controller ' => 'mydropzone ' ]])
3545 ->getForm ()
3646 ;
3747
38- $ rendered = $ container ->get (Environment::class)->render ('dropzone_form.html.twig ' , ['form ' => $ form ->createView ()]);
48+ $ rendered = $ this -> container ->get (Environment::class)->render ('dropzone_form.html.twig ' , ['form ' => $ form ->createView ()]);
3949
4050 $ this ->assertSame (
4151 '<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 +67,34 @@ public function testRenderForm()
5767 str_replace (' > ' , '> ' , $ rendered )
5868 );
5969 }
70+
71+ public function testRenderFormWithMultiFileUploads (): void
72+ {
73+ $ form = $ this ->container ->get (FormFactoryInterface::class)->createBuilder ()
74+ ->add ('photo ' , DropzoneType::class, ['attr ' => ['data-controller ' => 'mydropzone ' ], 'multiple ' => true ])
75+ ->getForm ()
76+ ;
77+
78+ $ rendered = $ this ->container ->get (Environment::class)->render ('dropzone_form.html.twig ' , ['form ' => $ form ->createView ()]);
79+
80+ $ this ->assertSame (
81+ '<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">
82+ <input type="file" id="form_photo" name="form[photo][]" required="required" data-controller="" multiple="multiple" class="dropzone-input" data-symfony--ux-dropzone--dropzone-target="input" />
83+
84+ <div class="dropzone-placeholder" data-symfony--ux-dropzone--dropzone-target="placeholder"></div>
85+
86+ <div class="dropzone-preview" data-symfony--ux-dropzone--dropzone-target="preview" style="display: none">
87+ <button class="dropzone-preview-button" type="button"
88+ data-symfony--ux-dropzone--dropzone-target="previewClearButton"></button>
89+
90+ <div class="dropzone-preview-image" style="display: none"
91+ data-symfony--ux-dropzone--dropzone-target="previewImage"></div>
92+
93+ <div data-symfony--ux-dropzone--dropzone-target="previewFilename" class="dropzone-preview-filename"></div>
94+ </div>
95+ </div></div></div></form>
96+ ' ,
97+ str_replace (' > ' , '> ' , $ rendered )
98+ );
99+ }
60100}
0 commit comments