#134 - added tests
This commit is contained in:
		| @@ -19,6 +19,7 @@ | |||||||
|     </coverage> |     </coverage> | ||||||
|     <php> |     <php> | ||||||
|         <server name="APP_ENV" value="testing"/> |         <server name="APP_ENV" value="testing"/> | ||||||
|  |         <env name="APP_URL" value="http://localhost"/> | ||||||
|         <env name="APP_KEY" value="base64:SKEJSy9oF9chQBCMbxqgj5zhtAvug9kwZ+cDiP1Y8A8="/> |         <env name="APP_KEY" value="base64:SKEJSy9oF9chQBCMbxqgj5zhtAvug9kwZ+cDiP1Y8A8="/> | ||||||
|         <env name="BCRYPT_ROUNDS" value="4"/> |         <env name="BCRYPT_ROUNDS" value="4"/> | ||||||
|         <env name="CACHE_DRIVER" value="array"/> |         <env name="CACHE_DRIVER" value="array"/> | ||||||
|   | |||||||
							
								
								
									
										139
									
								
								tests/Feature/ResumeTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								tests/Feature/ResumeTest.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | declare(strict_types=1); | ||||||
|  |  | ||||||
|  | namespace Tests\Feature; | ||||||
|  |  | ||||||
|  | use Illuminate\Foundation\Testing\DatabaseMigrations; | ||||||
|  | use Illuminate\Support\Carbon; | ||||||
|  | use Inertia\Testing\AssertableInertia as Assert; | ||||||
|  | use Tests\FeatureTestCase; | ||||||
|  | use Toby\Domain\Enums\EmploymentForm; | ||||||
|  | use Toby\Eloquent\Models\Holiday; | ||||||
|  | use Toby\Eloquent\Models\Resume; | ||||||
|  | use Toby\Eloquent\Models\Technology; | ||||||
|  | use Toby\Eloquent\Models\User; | ||||||
|  | use Toby\Eloquent\Models\YearPeriod; | ||||||
|  |  | ||||||
|  | class ResumeTest extends FeatureTestCase | ||||||
|  | { | ||||||
|  |     use DatabaseMigrations; | ||||||
|  |  | ||||||
|  |     public function setUp(): void | ||||||
|  |     { | ||||||
|  |         parent::setUp(); | ||||||
|  |  | ||||||
|  |         Technology::factory()->createMany([ | ||||||
|  |             ["name" => "Laravel"], | ||||||
|  |             ["name" => "Symfony"], | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function testAdminCanSeeResumesList(): void | ||||||
|  |     { | ||||||
|  |         Resume::factory()->count(10)->create(); | ||||||
|  |         $admin = User::factory()->admin()->create(); | ||||||
|  |  | ||||||
|  |         $this->assertDatabaseCount("resumes", 10); | ||||||
|  |  | ||||||
|  |         $this->actingAs($admin) | ||||||
|  |             ->get("/resumes") | ||||||
|  |             ->assertOk() | ||||||
|  |             ->assertInertia( | ||||||
|  |                 fn(Assert $page) => $page | ||||||
|  |                     ->component("Resumes/Index") | ||||||
|  |                     ->has("resumes.data", 10), | ||||||
|  |             ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function testAdminCanCreateResumeForEmployee(): void | ||||||
|  |     { | ||||||
|  |         $admin = User::factory()->admin()->create(); | ||||||
|  |         $user = User::factory()->hasProfile([ | ||||||
|  |             "first_name" => "Jan", | ||||||
|  |             "last_name" => "Kowalski", | ||||||
|  |             "employment_form" => EmploymentForm::EmploymentContract, | ||||||
|  |             "position" => "user", | ||||||
|  |             "employment_date" => Carbon::createFromDate(2021, 1, 4), | ||||||
|  |         ])->create(); | ||||||
|  |  | ||||||
|  |         $this->actingAs($admin) | ||||||
|  |             ->post("/resumes", [ | ||||||
|  |                 "user" => $user->id, | ||||||
|  |             ]) | ||||||
|  |             ->assertRedirect(); | ||||||
|  |  | ||||||
|  |         $this->assertDatabaseHas("resumes", [ | ||||||
|  |             "user_id" => $user->id, | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function testAdminCanCreateResumeForSomebodyWhoDoesNotExistInTheDatabase(): void | ||||||
|  |     { | ||||||
|  |         $admin = User::factory()->admin()->create(); | ||||||
|  |  | ||||||
|  |         $this->actingAs($admin) | ||||||
|  |             ->post("/resumes", [ | ||||||
|  |                 "name" => "Anna Nowak", | ||||||
|  |             ]) | ||||||
|  |             ->assertRedirect(); | ||||||
|  |  | ||||||
|  |         $this->assertDatabaseHas("resumes", [ | ||||||
|  |             "name" => "Anna Nowak", | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function testAdminCanEditResume(): void | ||||||
|  |     { | ||||||
|  |         $admin = User::factory()->admin()->create(); | ||||||
|  |         $resume = Resume::factory([ | ||||||
|  |             "name" => "Anna Nowak", | ||||||
|  |             "education" => [ | ||||||
|  |                 "school" => "Testowa Szkoła", | ||||||
|  |                 "degree" => "inżynier", | ||||||
|  |                 "fieldOfStudy" => "Informatyka", | ||||||
|  |                 "current" => false, | ||||||
|  |                 "startDate" => Carbon::createFromDate(2017, 9)->format("m/Y"), | ||||||
|  |                 "endDate" => Carbon::createFromDate(2021, 3)->format("m/Y"), | ||||||
|  |             ], | ||||||
|  |             "languages" => [ | ||||||
|  |                 "name" => "English", | ||||||
|  |                 "level" => "C2", | ||||||
|  |             ], | ||||||
|  |             "technologies" => [ | ||||||
|  |                 "name" => "Laravel", | ||||||
|  |                 "level" => "Expert", | ||||||
|  |             ], | ||||||
|  |             "projects" => [ | ||||||
|  |                 "description" => "Test project", | ||||||
|  |                 "technologies" => Technology::all()->pluck("name"), | ||||||
|  |                 "current" => false, | ||||||
|  |                 "startDate" => Carbon::createFromDate(2021, 3)->format("m/Y"), | ||||||
|  |                 "endDate" => Carbon::createFromDate(2022, 1)->format("m/Y"), | ||||||
|  |                 "tasks" => "Tasks", | ||||||
|  |             ], | ||||||
|  |         ])->create(); | ||||||
|  |  | ||||||
|  |         $this->actingAs($admin) | ||||||
|  |             ->put("/resumes/{$resume->id}", [ | ||||||
|  |                 "name" => "Natalia Kowalska", | ||||||
|  |             ]) | ||||||
|  |             ->assertSessionHasNoErrors(); | ||||||
|  |  | ||||||
|  |         $this->assertDatabaseHas("resumes", [ | ||||||
|  |             "name" => "Natalia Kowalska", | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function testAdminCanDeleteResume(): void | ||||||
|  |     { | ||||||
|  |         $resume = Resume::factory()->create(); | ||||||
|  |         $admin = User::factory()->admin()->create(); | ||||||
|  |  | ||||||
|  |         $this->actingAs($admin) | ||||||
|  |             ->delete("/resumes/{$resume->id}") | ||||||
|  |             ->assertSessionHasNoErrors(); | ||||||
|  |  | ||||||
|  |         $this->assertModelMissing($resume); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user