Skip to content
19 changes: 19 additions & 0 deletions src/Http/BaseRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,25 @@ public function onlyValidated(array $keys = []): array
: Arr::only($validatedFields, $keys);
}

public function validateResolved(): void
{
$this->init();

$this->before();
Comment thread
DenTray marked this conversation as resolved.

parent::validateResolved();
}

protected function init(): void
Comment thread
DenTray marked this conversation as resolved.
{
// Override in child classes if needed
}

protected function before(): array
Comment thread
DenTray marked this conversation as resolved.
{
return [];
}

protected function getOrderableFields(string $modelName, array $additionalFields = []): string
{
if (!class_exists($modelName)) {
Expand Down
31 changes: 31 additions & 0 deletions tests/BaseRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use RonasIT\Support\Http\BaseRequest;
use RonasIT\Support\Tests\Support\Mock\Models\TestModel;
use RonasIT\Support\Tests\Support\Request\UpdateTestRequest;
use RonasIT\Support\Tests\Support\Request\ValidateResolvedTestRequest;
use RonasIT\Support\Tests\Support\Traits\TableTestStateMockTrait;

class BaseRequestTest extends TestCase
Expand Down Expand Up @@ -69,6 +70,36 @@ public static function getOnlyValidatedRequestData(): array
];
}

public function testValidateResolved()
{
$request = ValidateResolvedTestRequest::create('v1/test', 'get');

$request->setContainer($this->app);

$request->validateResolved();

$this->assertTrue($request->initCalled);
$this->assertTrue($request->beforeCalled);
}

public function testInitDefault()
{
$request = new BaseRequest();

$result = $this->callEncapsulatedMethod($request, 'init');

$this->assertNull($result);
}

public function testBeforeDefault()
{
$request = new BaseRequest();

$result = $this->callEncapsulatedMethod($request, 'before');

$this->assertEquals([], $result);
}

#[DataProvider('getOnlyValidatedRequestData')]
public function testOnlyValidated(array $keys, array $result)
{
Expand Down
28 changes: 28 additions & 0 deletions tests/support/Request/ValidateResolvedTestRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace RonasIT\Support\Tests\Support\Request;

use RonasIT\Support\Http\BaseRequest;

class ValidateResolvedTestRequest extends BaseRequest
{
public bool $initCalled = false;
public bool $beforeCalled = false;

public function rules(): array
{
return [];
}

protected function init(): void
{
$this->initCalled = true;
}

protected function before(): array
{
$this->beforeCalled = true;

return [];
}
}