diff --git a/app/Http/Controllers/Task/Admin/OverviewController.php b/app/Http/Controllers/Task/Admin/OverviewController.php index 17083b72..e4eb621e 100644 --- a/app/Http/Controllers/Task/Admin/OverviewController.php +++ b/app/Http/Controllers/Task/Admin/OverviewController.php @@ -28,7 +28,7 @@ public function index(Course $course, Task $task) : View } $finishedCount = $task->projects()->where('status', ProjectStatus::Finished)->count(); $finishedPercent = $projectCount == 0 ? 0 : $finishedCount / $projectCount * 100; - $failedCount = $task->projects()->where('status', ProjectStatus::Overdue)->count(); + $failedCount = $task->projects()->claimed()->where('status', ProjectStatus::Overdue)->count(); $failedPercent = $projectCount == 0 ? 0 : $failedCount / $projectCount * 100; $buildCount = $task->jobs()->count(); $buildsToday = $task->jobs()->whereRaw("date(pipelines.created_at) = ?", now()->toDateString())->withTrashedParents()->count(); diff --git a/tests/Feature/Task/Controller/OverviewControllerTest.php b/tests/Feature/Task/Controller/OverviewControllerTest.php index 3396f0e0..1e30c6c2 100644 --- a/tests/Feature/Task/Controller/OverviewControllerTest.php +++ b/tests/Feature/Task/Controller/OverviewControllerTest.php @@ -4,6 +4,7 @@ use App\Models\Project; use App\Models\Task; use App\Models\User; +use App\ProjectStatus; use Illuminate\Foundation\Testing\RefreshDatabase; use function Pest\Laravel\actingAs; @@ -12,12 +13,19 @@ beforeEach(function() { $this->task = Task::factory()->for(Course::factory())->create(); + $this->professor = User::factory()->admin()->hasAttached($this->task->course)->create(); + $this->student = User::factory()->hasAttached($this->task->course)->create(); + Project::factory()->for($this->task)->create(); Project::factory()->finished()->for($this->task)->create(); + Project::factory()->overdue()->for($this->task)->create( + [ + 'ownable_id' => $this->student->id, + 'ownable_type' => User::class, + ] + ); Project::factory()->overdue()->for($this->task)->create(); - - $this->professor = User::factory()->admin()->hasAttached($this->task->course)->create(); - $this->student = User::factory()->hasAttached($this->task->course)->create(); + }); it('should not allow access for students', function() { @@ -35,8 +43,13 @@ $response->assertStatus(200); $response->assertViewIs('tasks.admin.index'); $response->assertViewHas('task', $this->task); - $response->assertViewHas('projectCount', 3); + $response->assertViewHas('projectCount', 4); $response->assertViewHas('finishedCount', 1); + expect( + $this->task->projects() + ->where('status', ProjectStatus::Overdue) + ->count() + )->toBe(2); $response->assertViewHas('failedCount', 1); });