12
12
namespace Symfony \UX \Dropzone \Tests ;
13
13
14
14
use PHPUnit \Framework \TestCase ;
15
+ use Symfony \Component \DependencyInjection \ContainerInterface ;
15
16
use Symfony \Component \Form \FormFactoryInterface ;
16
17
use Symfony \UX \Dropzone \Form \DropzoneType ;
17
18
use Symfony \UX \Dropzone \Tests \Kernel \TwigAppKernel ;
24
25
*/
25
26
class DropzoneTypeTest extends TestCase
26
27
{
27
- public function testRenderForm ()
28
+ private ContainerInterface $ kernel ;
29
+
30
+ public function setUp (): void
28
31
{
29
32
$ kernel = new TwigAppKernel ('test ' , true );
30
33
$ kernel ->boot ();
31
- $ container = $ kernel ->getContainer ()->get ('test.service_container ' );
32
34
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 ()
34
41
->add ('photo ' , DropzoneType::class, ['attr ' => ['data-controller ' => 'mydropzone ' ]])
35
42
->getForm ()
36
43
;
37
44
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 ()]);
39
46
40
47
$ this ->assertSame (
41
48
'<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()
57
64
str_replace (' > ' , '> ' , $ rendered )
58
65
);
59
66
}
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
+ }
60
97
}
0 commit comments