- added some test
This commit is contained in:
		@@ -36,6 +36,6 @@ class GoogleController extends Controller
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $auth->guard()->login($user, true);
 | 
					        $auth->guard()->login($user, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return redirect()->route("dashboard");
 | 
					        return redirect()->intended();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								tests/Feature/MonthlyUsageTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								tests/Feature/MonthlyUsageTest.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests\Feature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Foundation\Testing\DatabaseMigrations;
 | 
				
			||||||
 | 
					use Tests\FeatureTestCase;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MonthlyUsageTest extends FeatureTestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use DatabaseMigrations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testAdministatorCanSeeVacationsMonthlyUsage(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $admin = User::factory()->admin()->createQuietly();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($admin)
 | 
				
			||||||
 | 
					            ->get("/monthly-usage")
 | 
				
			||||||
 | 
					            ->assertOk();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCannotSeeVacationsMonthlyUsage(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->get("/monthly-usage")
 | 
				
			||||||
 | 
					            ->assertForbidden();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										33
									
								
								tests/Feature/VacationCalendarTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tests/Feature/VacationCalendarTest.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests\Feature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Foundation\Testing\DatabaseMigrations;
 | 
				
			||||||
 | 
					use Tests\FeatureTestCase;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationCalendarTest extends FeatureTestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use DatabaseMigrations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testAdministrativeApproverCanDownloadTimesheet(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $administrativeApprover = User::factory()->administrativeApprover()->createQuietly();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($administrativeApprover)
 | 
				
			||||||
 | 
					            ->get("/timesheet/january")
 | 
				
			||||||
 | 
					            ->assertOk();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCannotDownloadTimesheet(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->get("/timesheet/january")
 | 
				
			||||||
 | 
					            ->assertForbidden();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -13,6 +13,7 @@ use Tests\FeatureTestCase;
 | 
				
			|||||||
use Toby\Domain\Enums\VacationType;
 | 
					use Toby\Domain\Enums\VacationType;
 | 
				
			||||||
use Toby\Domain\PolishHolidaysRetriever;
 | 
					use Toby\Domain\PolishHolidaysRetriever;
 | 
				
			||||||
use Toby\Domain\States\VacationRequest\Approved;
 | 
					use Toby\Domain\States\VacationRequest\Approved;
 | 
				
			||||||
 | 
					use Toby\Domain\States\VacationRequest\Cancelled;
 | 
				
			||||||
use Toby\Domain\States\VacationRequest\Rejected;
 | 
					use Toby\Domain\States\VacationRequest\Rejected;
 | 
				
			||||||
use Toby\Domain\States\VacationRequest\WaitingForAdministrative;
 | 
					use Toby\Domain\States\VacationRequest\WaitingForAdministrative;
 | 
				
			||||||
use Toby\Domain\States\VacationRequest\WaitingForTechnical;
 | 
					use Toby\Domain\States\VacationRequest\WaitingForTechnical;
 | 
				
			||||||
@@ -430,4 +431,179 @@ class VacationRequestTest extends FeatureTestCase
 | 
				
			|||||||
                "vacationRequest" => __("The vacation request cannot be created at the turn of the year."),
 | 
					                "vacationRequest" => __("The vacation request cannot be created at the turn of the year."),
 | 
				
			||||||
            ]);
 | 
					            ]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCanSeeOnlyHisVacationRequests(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VacationRequest::factory()
 | 
				
			||||||
 | 
					            ->count(10)
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->get("/vacation-requests")
 | 
				
			||||||
 | 
					            ->assertRedirect("/vacation-requests/me");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCannotCreateVacationRequestForAnotherEmployee(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $anotherUser = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->post("/vacation-requests", [
 | 
				
			||||||
 | 
					                "user" => $anotherUser->id,
 | 
				
			||||||
 | 
					                "type" => VacationType::Vacation->value,
 | 
				
			||||||
 | 
					                "from" => Carbon::create($currentYearPeriod->year, 2, 7)->toDateString(),
 | 
				
			||||||
 | 
					                "to" => Carbon::create($currentYearPeriod->year, 2, 11)->toDateString(),
 | 
				
			||||||
 | 
					                "comment" => "Comment for the vacation request.",
 | 
				
			||||||
 | 
					            ])
 | 
				
			||||||
 | 
					            ->assertForbidden();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCanCancelVacationRequestWithWaitingForAdministrativeStatus(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VacationLimit::factory([
 | 
				
			||||||
 | 
					            "days" => 20,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** @var VacationRequest $vacationRequest */
 | 
				
			||||||
 | 
					        $vacationRequest = VacationRequest::factory([
 | 
				
			||||||
 | 
					            "state" => WaitingForAdministrative::class,
 | 
				
			||||||
 | 
					            "type" => VacationType::Vacation,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->post("/vacation-requests/{$vacationRequest->id}/cancel")
 | 
				
			||||||
 | 
					            ->assertSessionHasNoErrors();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $vacationRequest->refresh();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->assertTrue($vacationRequest->state->equals(Cancelled::class));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCannotCancelVacationRequestWithApprovedStatus(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VacationLimit::factory([
 | 
				
			||||||
 | 
					            "days" => 20,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** @var VacationRequest $vacationRequest */
 | 
				
			||||||
 | 
					        $vacationRequest = VacationRequest::factory([
 | 
				
			||||||
 | 
					            "state" => Approved::class,
 | 
				
			||||||
 | 
					            "type" => VacationType::Vacation,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->post("/vacation-requests/{$vacationRequest->id}/cancel")
 | 
				
			||||||
 | 
					            ->assertStatus(403);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testAdministrativeApproverCanCancelVacationRequestWithApprovedStatus(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $administrativeApprover = User::factory()->administrativeApprover()->createQuietly();
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VacationLimit::factory([
 | 
				
			||||||
 | 
					            "days" => 20,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** @var VacationRequest $vacationRequest */
 | 
				
			||||||
 | 
					        $vacationRequest = VacationRequest::factory([
 | 
				
			||||||
 | 
					            "state" => Approved::class,
 | 
				
			||||||
 | 
					            "type" => VacationType::Vacation,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($administrativeApprover)
 | 
				
			||||||
 | 
					            ->post("/vacation-requests/{$vacationRequest->id}/cancel")
 | 
				
			||||||
 | 
					            ->assertSessionHasNoErrors();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $vacationRequest->refresh();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->assertTrue($vacationRequest->state->equals(Cancelled::class));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCanDownloadHisVacationRequestAsPdf(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VacationLimit::factory([
 | 
				
			||||||
 | 
					            "days" => 20,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** @var VacationRequest $vacationRequest */
 | 
				
			||||||
 | 
					        $vacationRequest = VacationRequest::factory([
 | 
				
			||||||
 | 
					            "state" => WaitingForTechnical::class,
 | 
				
			||||||
 | 
					            "type" => VacationType::Vacation,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($user)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->get("/vacation-requests/{$vacationRequest->id}/download")
 | 
				
			||||||
 | 
					            ->assertSessionHasNoErrors();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testEmployeeCannotDownloadAnotherEmployeesVacationRequestAsPdf(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $anotherUser = User::factory()->createQuietly();
 | 
				
			||||||
 | 
					        $currentYearPeriod = YearPeriod::current();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        VacationLimit::factory([
 | 
				
			||||||
 | 
					            "days" => 20,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($anotherUser)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** @var VacationRequest $vacationRequest */
 | 
				
			||||||
 | 
					        $vacationRequest = VacationRequest::factory([
 | 
				
			||||||
 | 
					            "state" => WaitingForTechnical::class,
 | 
				
			||||||
 | 
					            "type" => VacationType::Vacation,
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					            ->for($anotherUser)
 | 
				
			||||||
 | 
					            ->for($currentYearPeriod)
 | 
				
			||||||
 | 
					            ->create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->actingAs($user)
 | 
				
			||||||
 | 
					            ->get("/vacation-requests/{$vacationRequest->id}/download")
 | 
				
			||||||
 | 
					            ->assertForbidden();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user