1111 */
1212namespace HyperfTest \Validation \Cases ;
1313
14+ use Hyperf \HttpMessage \Server \Response ;
1415use Hyperf \HttpMessage \Upload \UploadedFile ;
1516use Hyperf \Translation \ArrayLoader ;
1617use Hyperf \Translation \Translator ;
1718use Hyperf \Utils \Context ;
1819use Hyperf \Validation \Contract \ValidatorFactoryInterface ;
1920use Hyperf \Validation \ValidationException ;
2021use Hyperf \Validation \ValidatorFactory ;
22+ use HyperfTest \Validation \Cases \Stub \BarSceneRequest ;
2123use HyperfTest \Validation \Cases \Stub \DemoRequest ;
2224use HyperfTest \Validation \Cases \Stub \FooSceneRequest ;
2325use Mockery ;
2426use PHPUnit \Framework \TestCase ;
2527use Psr \Container \ContainerInterface ;
28+ use Psr \Http \Message \ResponseInterface ;
2629use Psr \Http \Message \ServerRequestInterface ;
2730
2831/**
@@ -74,17 +77,46 @@ public function testRequestValidationDataWithSameKey()
7477 $ this ->assertEquals (['file ' => ['Invalid File. ' , $ file ]], $ request ->getValidationData ());
7578 }
7679
80+ public function testRewriteGetRules ()
81+ {
82+ $ psrRequest = Mockery::mock (ServerRequestInterface::class);
83+ $ psrRequest ->shouldReceive ('getQueryParams ' )->andReturn ([]);
84+ $ psrRequest ->shouldReceive ('getUploadedFiles ' )->andReturn ([]);
85+ $ psrRequest ->shouldReceive ('getParsedBody ' )->andReturn ([
86+ 'name ' => 'xxx ' ,
87+ ]);
88+
89+ Context::set (ServerRequestInterface::class, $ psrRequest );
90+ Context::set (ResponseInterface::class, new Response ());
91+ $ container = Mockery::mock (ContainerInterface::class);
92+ $ translator = new Translator (new ArrayLoader (), 'en ' );
93+ $ container ->shouldReceive ('get ' )->with (ValidatorFactoryInterface::class)->andReturn (new ValidatorFactory ($ translator ));
94+
95+ $ request = new BarSceneRequest ($ container );
96+ $ res = $ request ->scene ('required ' )->validated ();
97+ $ this ->assertSame (['name ' => 'xxx ' ], $ res );
98+
99+ try {
100+ $ request = new BarSceneRequest ($ container );
101+ $ request ->validateResolved ();
102+ $ this ->assertTrue (false );
103+ } catch (\Throwable $ exception ) {
104+ $ this ->assertInstanceOf (ValidationException::class, $ exception );
105+ $ this ->assertSame ('validation.integer ' , $ exception ->validator ->errors ()->first ());
106+ }
107+ }
108+
77109 public function testSceneForFormRequest ()
78110 {
79111 $ psrRequest = Mockery::mock (ServerRequestInterface::class);
80112 $ psrRequest ->shouldReceive ('getQueryParams ' )->andReturn ([]);
81113 $ psrRequest ->shouldReceive ('getUploadedFiles ' )->andReturn ([]);
82114 $ psrRequest ->shouldReceive ('getParsedBody ' )->andReturn ([
83115 'mobile ' => '12345 ' ,
84- 'name ' => '' ,
85116 ]);
86117
87118 Context::set (ServerRequestInterface::class, $ psrRequest );
119+ Context::set (ResponseInterface::class, new Response ());
88120 $ container = Mockery::mock (ContainerInterface::class);
89121 $ translator = new Translator (new ArrayLoader (), 'en ' );
90122 $ container ->shouldReceive ('get ' )->with (ValidatorFactoryInterface::class)->andReturn (new ValidatorFactory ($ translator ));
@@ -95,8 +127,9 @@ public function testSceneForFormRequest()
95127
96128 wait (function () use ($ request , $ psrRequest ) {
97129 Context::set (ServerRequestInterface::class, $ psrRequest );
130+ Context::set (ResponseInterface::class, new Response ());
98131 try {
99- $ request ->validated ();
132+ $ request ->validateResolved ();
100133 $ this ->assertTrue (false );
101134 } catch (\Throwable $ exception ) {
102135 $ this ->assertInstanceOf (ValidationException::class, $ exception );
@@ -105,7 +138,7 @@ public function testSceneForFormRequest()
105138
106139 try {
107140 $ request = new FooSceneRequest ($ container );
108- $ request ->validated ();
141+ $ request ->validateResolved ();
109142 $ this ->assertTrue (false );
110143 } catch (\Throwable $ exception ) {
111144 $ this ->assertInstanceOf (ValidationException::class, $ exception );
0 commit comments