Skip to content

Commit a956778

Browse files
committed
feat: add some functions to HasValidate
1 parent 9992b67 commit a956778

File tree

4 files changed

+116
-0
lines changed

4 files changed

+116
-0
lines changed

src/Rules/HasValidate.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Php\Support\Laravel\Rules;
66

7+
use Illuminate\Http\Request;
78
use Illuminate\Support\Facades\Validator;
89

910
/**
@@ -39,4 +40,32 @@ protected static function validateValue(
3940

4041
return $value;
4142
}
43+
44+
45+
protected static function gainIntValue(
46+
Request $request,
47+
string $name,
48+
int $default = null
49+
): ?int {
50+
$value = $request->get($name, $default);
51+
return $value === null ? null : (((int)$value) ?: $default);
52+
}
53+
54+
protected static function gainBoolValue(
55+
Request $request,
56+
string $name,
57+
bool $default = null
58+
): ?bool {
59+
$value = $request->get($name, $default);
60+
return $value === null ? null : isTrue($value);
61+
}
62+
63+
protected static function gainStringValue(
64+
Request $request,
65+
string $name,
66+
string $default = null
67+
): ?string {
68+
$value = (string)$request->get($name, $default);
69+
return $value ?: null;
70+
}
4271
}

src/Traits/Requests/RequestModelable.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44

55
namespace Php\Support\Laravel\Traits\Requests;
66

7+
use Illuminate\Http\Request;
78
use Php\Support\Laravel\Traits\ModelQueryable;
89

10+
/**
11+
* @mixin Request
12+
*/
913
trait RequestModelable
1014
{
1115
use ModelQueryable;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Php\Support\Laravel\Tests\Unit;
6+
7+
use Orchestra\Testbench\TestCase;
8+
9+
abstract class AbstractUnitTestCase extends TestCase
10+
{
11+
12+
/**
13+
* @return void
14+
*/
15+
protected function setUp(): void
16+
{
17+
parent::setUp();
18+
}
19+
20+
21+
protected static function getProtectedMethod(string $class, string $name): \ReflectionMethod
22+
{
23+
$class = new \ReflectionClass($class);
24+
$method = $class->getMethod($name);
25+
$method->setAccessible(true);
26+
27+
return $method;
28+
}
29+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Php\Support\Laravel\Tests\Unit\Rules;
6+
7+
use Illuminate\Http\Request;
8+
use Php\Support\Laravel\Rules\HasValidate;
9+
use Php\Support\Laravel\Tests\Unit\AbstractUnitTestCase;
10+
11+
class HasValidateTest extends AbstractUnitTestCase
12+
{
13+
use HasValidate;
14+
15+
public function testGainValue(): void
16+
{
17+
$query = [
18+
'val_int' => 12,
19+
'val_string' => 'test',
20+
'val_bool' => true,
21+
];
22+
23+
$request = new Request($query);
24+
25+
static::assertEquals(12, static::gainIntValue($request, 'val_int'));
26+
static::assertEquals('test', static::gainStringValue($request, 'val_string'));
27+
static::assertTrue(static::gainBoolValue($request, 'val_bool'));
28+
}
29+
30+
public function testGainValueNull(): void
31+
{
32+
$request = new Request();
33+
34+
static::assertNull(static::gainIntValue($request, 'val_int'));
35+
static::assertNull(static::gainIntValue($request, 'val_int', null));
36+
static::assertNull(static::gainStringValue($request, 'val_string'));
37+
static::assertNull(static::gainStringValue($request, 'val_string', null));
38+
static::assertNull(static::gainBoolValue($request, 'val_bool'));
39+
static::assertNull(static::gainBoolValue($request, 'val_bool', null));
40+
}
41+
42+
public function testGainValueDefault(): void
43+
{
44+
$request = new Request();
45+
46+
static::assertEquals(15, static::gainIntValue($request, 'val_int', 15));
47+
static::assertEquals(0, static::gainIntValue($request, 'val_int', 0));
48+
static::assertEquals('example', static::gainStringValue($request, 'val_string', 'example'));
49+
static::assertEquals('', static::gainStringValue($request, 'val_string', ''));
50+
static::assertFalse(static::gainBoolValue($request, 'val_bool', false));
51+
static::assertTrue(static::gainBoolValue($request, 'val_bool', true));
52+
}
53+
54+
}

0 commit comments

Comments
 (0)