1111
1212namespace Symfony \Component \Form \Tests \Extension \Core \Type ;
1313
14+ use Symfony \Bridge \PhpUnit \ExpectDeprecationTrait ;
1415use Symfony \Component \OptionsResolver \Exception \InvalidOptionsException ;
1516
1617class UrlTypeTestextends TextTypeTest
1718{
19+ use ExpectDeprecationTrait;
20+
1821public const TESTED_TYPE ='Symfony\Component\Form\Extension\Core\Type\UrlType ' ;
1922
23+ /**
24+ * @group legacy
25+ */
2026public function testSubmitAddsDefaultProtocolIfNoneIsIncluded ()
2127 {
28+ $ this ->expectDeprecation ('Since symfony/form 6.4: Not configuring the "default_protocol" option is deprecated. It will default to "null" in 7.0. ' );
2229$ form =$ this ->factory ->create (static ::TESTED_TYPE ,'name ' );
2330
2431$ form ->submit ('www.domain.com ' );
@@ -86,6 +93,7 @@ public function testThrowExceptionIfDefaultProtocolIsInvalid()
8693public function testSubmitNullUsesDefaultEmptyData ($ emptyData ='empty ' ,$ expectedData ='http://empty ' )
8794 {
8895$ form =$ this ->factory ->create (static ::TESTED_TYPE ,null , [
96+ 'default_protocol ' =>'http ' ,// TODO: remove in 7.0
8997'empty_data ' =>$ emptyData ,
9098 ]);
9199$ form ->submit (null );
@@ -95,4 +103,47 @@ public function testSubmitNullUsesDefaultEmptyData($emptyData = 'empty', $expect
95103$ this ->assertSame ($ expectedData ,$ form ->getNormData ());
96104$ this ->assertSame ($ expectedData ,$ form ->getData ());
97105 }
106+
107+ /**
108+ * @todo remove in 7.0
109+ */
110+ public function testSubmitNullReturnsNullWithEmptyDataAsString ()
111+ {
112+ $ form =$ this ->factory ->create (static ::TESTED_TYPE ,'name ' , [
113+ 'default_protocol ' =>'http ' ,
114+ 'empty_data ' =>'' ,
115+ ]);
116+
117+ $ form ->submit (null );
118+ $ this ->assertSame ('' ,$ form ->getData ());
119+ $ this ->assertSame ('' ,$ form ->getNormData ());
120+ $ this ->assertSame ('' ,$ form ->getViewData ());
121+ }
122+
123+ /**
124+ * @dataProvider provideZeros
125+ *
126+ * @todo remove in 7.0
127+ */
128+ public function testSetDataThroughParamsWithZero ($ data ,$ dataAsString )
129+ {
130+ $ form =$ this ->factory ->create (static ::TESTED_TYPE ,null , [
131+ 'data ' =>$ data ,
132+ 'default_protocol ' =>'http ' ,
133+ ]);
134+ $ view =$ form ->createView ();
135+
136+ $ this ->assertFalse ($ form ->isEmpty ());
137+
138+ $ this ->assertSame ($ dataAsString ,$ view ->vars ['value ' ]);
139+ $ this ->assertSame ($ dataAsString ,$ form ->getData ());
140+ }
141+
142+ /**
143+ * @todo remove in 7.0
144+ */
145+ protected function getTestOptions ():array
146+ {
147+ return ['default_protocol ' =>'http ' ];
148+ }
98149}