Skip to content

Commit 5dd2f6b

Browse files
authored
Added test cases.
1 parent f98094f commit 5dd2f6b

File tree

2 files changed

+74
-3
lines changed

2 files changed

+74
-3
lines changed

tests/Cases/FormRequestTest.php

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,21 @@
1111
*/
1212
namespace HyperfTest\Validation\Cases;
1313

14+
use Hyperf\HttpMessage\Server\Response;
1415
use Hyperf\HttpMessage\Upload\UploadedFile;
1516
use Hyperf\Translation\ArrayLoader;
1617
use Hyperf\Translation\Translator;
1718
use Hyperf\Utils\Context;
1819
use Hyperf\Validation\Contract\ValidatorFactoryInterface;
1920
use Hyperf\Validation\ValidationException;
2021
use Hyperf\Validation\ValidatorFactory;
22+
use HyperfTest\Validation\Cases\Stub\BarSceneRequest;
2123
use HyperfTest\Validation\Cases\Stub\DemoRequest;
2224
use HyperfTest\Validation\Cases\Stub\FooSceneRequest;
2325
use Mockery;
2426
use PHPUnit\Framework\TestCase;
2527
use Psr\Container\ContainerInterface;
28+
use Psr\Http\Message\ResponseInterface;
2629
use 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);

tests/Cases/Stub/BarSceneRequest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
/**
5+
* This file is part of Hyperf.
6+
*
7+
* @link https://www.hyperf.io
8+
* @document https://hyperf.wiki
9+
* @contact group@hyperf.io
10+
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
11+
*/
12+
namespace HyperfTest\Validation\Cases\Stub;
13+
14+
use Hyperf\Validation\Request\FormRequest;
15+
16+
class BarSceneRequest extends FormRequest
17+
{
18+
public function authorize(): bool
19+
{
20+
return true;
21+
}
22+
23+
public function rules(): array
24+
{
25+
$scene = $this->getScene();
26+
27+
switch ($scene) {
28+
case 'required':
29+
return [
30+
'name' => 'required',
31+
];
32+
default:
33+
return [
34+
'name' => 'required|integer',
35+
];
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)