mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 18:54:58 +00:00 
			
		
		
		
	use the correct validator function to check for errors, add a test for ShowController
This commit is contained in:
		| @@ -39,7 +39,7 @@ class DateRangeRequest extends ApiRequest | ||||
|     { | ||||
|         $validator->after( | ||||
|             function (Validator $validator): void { | ||||
|                 if (!$validator->valid()) { | ||||
|                 if ($validator->failed()) { | ||||
|                     // set null values
 | ||||
|                     $this->attributes->set('start', null); | ||||
|                     $this->attributes->set('end', null); | ||||
|   | ||||
| @@ -39,8 +39,7 @@ class DateRequest extends ApiRequest | ||||
|     { | ||||
|         $validator->after( | ||||
|             function (Validator $validator): void { | ||||
|                 $this->attributes->set('date', null); | ||||
|                 if (!$validator->valid()) { | ||||
|                 if ($validator->failed()) { | ||||
|                     return; | ||||
|                 } | ||||
|                 $date  = $this->getCarbonDate('date')?->endOfDay(); | ||||
|   | ||||
| @@ -42,7 +42,7 @@ class AccountTypeApiRequest extends ApiRequest | ||||
|     { | ||||
|         $validator->after( | ||||
|             function (Validator $validator): void { | ||||
|                 if (!$validator->valid()) { | ||||
|                 if ($validator->failed()) { | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|   | ||||
| @@ -57,7 +57,7 @@ class PaginationRequest extends ApiRequest | ||||
|     { | ||||
|         $validator->after( | ||||
|             function (Validator $validator): void { | ||||
|                 if (!$validator->valid()) { | ||||
|                 if ($validator->failed()) { | ||||
|                     return; | ||||
|                 } | ||||
| 
 | ||||
|   | ||||
							
								
								
									
										24
									
								
								database/factories/AccountFactory.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								database/factories/AccountFactory.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| <?php | ||||
| declare(strict_types=1); | ||||
| 
 | ||||
| namespace Database\Factories; | ||||
| 
 | ||||
| use FireflyIII\Enums\AccountTypeEnum; | ||||
| use FireflyIII\Models\AccountType; | ||||
| use Illuminate\Database\Eloquent\Factories\Factory; | ||||
| 
 | ||||
| class AccountFactory extends Factory | ||||
| { | ||||
|     public function definition(): array | ||||
|     { | ||||
|         return [ | ||||
|             'name' => $this->faker->name(), | ||||
|             'active' => true, | ||||
|         ]; | ||||
|     } | ||||
| 
 | ||||
|     public function withType(AccountTypeEnum $type): static | ||||
|     { | ||||
|         return $this->for(AccountType::where('type', $type->value)->first()); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										90
									
								
								tests/integration/Api/Models/Account/ShowControllerTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								tests/integration/Api/Models/Account/ShowControllerTest.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| <?php | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  * AccountControllerTest.php | ||||
|  * Copyright (c) 2025 james@firefly-iii.org | ||||
|  * | ||||
|  * This file is part of Firefly III (https://github.com/firefly-iii). | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU Affero General Public License as | ||||
|  * published by the Free Software Foundation, either version 3 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Affero General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Affero General Public License | ||||
|  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| 
 | ||||
| declare(strict_types=1); | ||||
| 
 | ||||
| namespace Tests\integration\Api\Models\Account; | ||||
| 
 | ||||
| use FireflyIII\Enums\AccountTypeEnum; | ||||
| use FireflyIII\Models\Account; | ||||
| use FireflyIII\User; | ||||
| use Override; | ||||
| use Illuminate\Foundation\Testing\RefreshDatabase; | ||||
| use Tests\integration\TestCase; | ||||
| 
 | ||||
| /** | ||||
|  * @internal | ||||
|  * | ||||
|  * @covers \FireflyIII\Api\V1\Controllers\Models\Account\ShowController | ||||
|  */ | ||||
| final class ShowControllerTest extends TestCase | ||||
| { | ||||
|     use RefreshDatabase; | ||||
|     private User $user; | ||||
| 
 | ||||
|     protected function setUp(): void | ||||
|     { | ||||
|         parent::setUp(); | ||||
| 
 | ||||
|         $this->user = $this->createAuthenticatedUser(); | ||||
|         $this->actingAs($this->user); | ||||
| 
 | ||||
|         Account::factory()->for($this->user)->withType(AccountTypeEnum::ASSET)->create(); | ||||
|         Account::factory()->for($this->user)->withType(AccountTypeEnum::REVENUE)->create(); | ||||
|         Account::factory()->for($this->user)->withType(AccountTypeEnum::EXPENSE)->create(); | ||||
|         Account::factory()->for($this->user)->withType(AccountTypeEnum::DEBT)->create(); | ||||
|         Account::factory()->for($this->user)->withType(AccountTypeEnum::ASSET)->create(); | ||||
|     } | ||||
| 
 | ||||
|     public function testIndex(): void | ||||
|     { | ||||
|         $this->actingAs($this->user); | ||||
|         $response = $this->getJson(route('api.v1.accounts.index')); | ||||
|         $response->assertStatus(200); | ||||
|         $response->assertJson([ | ||||
|             'meta' => ['pagination' => ['total' => 5]], | ||||
|         ]); | ||||
|     } | ||||
| 
 | ||||
|     public function testIndexFailsOnUnknownAccountType(): void | ||||
|     { | ||||
|         $this->actingAs($this->user); | ||||
|         $response = $this->getJson(route('api.v1.accounts.index').'?type=foobar'); | ||||
|         $response->assertStatus(422); | ||||
|         $response->assertJson(['errors' => ['type' => ['The selected type is invalid.']]]); | ||||
|     } | ||||
| 
 | ||||
|     public function testIndexCanFilterOnAccountType(): void | ||||
|     { | ||||
|         $this->actingAs($this->user); | ||||
|         $response = $this->getJson(route('api.v1.accounts.index').'?type=asset'); | ||||
|         $response->assertStatus(200); | ||||
|         $response->assertJson([ | ||||
|             'data' => [ | ||||
|                 ['attributes' => ['type' => 'asset']], | ||||
|                 ['attributes' => ['type' => 'asset']], | ||||
|             ], | ||||
|             'meta' => ['pagination' => ['total' => 2]], | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user