Validation for project budgeted hours

This commit is contained in:
David Bomba 2024-03-10 13:01:30 +11:00
parent c705784137
commit 58fabe2704
4 changed files with 121 additions and 0 deletions

View File

@ -44,6 +44,7 @@ class StoreProjectRequest extends Request
$rules['name'] = 'required';
$rules['client_id'] = 'required|exists:clients,id,company_id,'.$user->company()->id;
$rules['budgeted_hours'] = 'sometimes|numeric';
if (isset($this->number)) {
$rules['number'] = Rule::unique('projects')->where('company_id', $user->company()->id);
@ -74,6 +75,9 @@ class StoreProjectRequest extends Request
$input['color'] = '';
}
if(array_key_exists('budgeted_hours', $input) && empty($input['budgeted_hours']))
$input['budgeted_hours'] = 0;
$this->replace($input);
}

View File

@ -45,6 +45,8 @@ class UpdateProjectRequest extends Request
$rules['number'] = Rule::unique('projects')->where('company_id', $user->company()->id)->ignore($this->project->id);
}
$rules['budgeted_hours'] = 'sometimes|numeric';
if ($this->file('documents') && is_array($this->file('documents'))) {
$rules['documents.*'] = $this->file_validation;
} elseif ($this->file('documents')) {
@ -73,6 +75,10 @@ class UpdateProjectRequest extends Request
if (array_key_exists('color', $input) && is_null($input['color'])) {
$input['color'] = '';
}
if(array_key_exists('budgeted_hours', $input) && empty($input['budgeted_hours'])) {
$input['budgeted_hours'] = 0;
}
$this->replace($input);
}

View File

@ -29,6 +29,8 @@ class ProjectApiTest extends TestCase
use DatabaseTransactions;
use MockAccountData;
protected $faker;
protected function setUp() :void
{
parent::setUp();
@ -42,6 +44,110 @@ class ProjectApiTest extends TestCase
Model::reguard();
}
public function testProjectValidationForBudgetedHoursPut()
{
$data = $this->project->toArray();
$data['budgeted_hours'] = "aa";
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->putJson("/api/v1/projects/{$this->project->hashed_id}", $data);
$response->assertStatus(422);
}
public function testProjectValidationForBudgetedHoursPutNull()
{
$data = $this->project->toArray();
$data['budgeted_hours'] = null;
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->putJson("/api/v1/projects/{$this->project->hashed_id}", $data);
$response->assertStatus(200);
}
public function testProjectValidationForBudgetedHoursPutEmpty()
{
$data = $this->project->toArray();
$data['budgeted_hours'] = "";
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->putJson("/api/v1/projects/{$this->project->hashed_id}", $data);
$response->assertStatus(200);
}
public function testProjectValidationForBudgetedHours()
{
$data = [
'name' => $this->faker->firstName(),
'client_id' => $this->client->hashed_id,
'number' => 'duplicate',
'budgeted_hours' => null
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/projects', $data);
$response->assertStatus(200);
}
public function testProjectValidationForBudgetedHours2()
{
$data = [
'name' => $this->faker->firstName(),
'client_id' => $this->client->hashed_id,
'number' => 'duplicate',
'budgeted_hours' => "a"
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/projects', $data);
$response->assertStatus(422);
}
public function testProjectValidationForBudgetedHours3()
{
$data = [
'name' => $this->faker->firstName(),
'client_id' => $this->client->hashed_id,
'number' => 'duplicate',
'budgeted_hours' => ""
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/projects', $data);
$response->assertStatus(200);
}
public function testProjectGetFilter()
{
$response = $this->withHeaders([

View File

@ -72,6 +72,11 @@ trait MockAccountData
use MakesHash;
use GeneratesCounter;
/**
* @var
*/
public $project;
/**
* @var
*/