Files
vkv/tests/Feature/Evaluation/EvaluationRunControllerTest.php
Zdeněk Burda 41e3ce6f25 Initial commit
2026-01-09 21:26:40 +01:00

73 lines
2.1 KiB
PHP

<?php
namespace Tests\Feature\Evaluation;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class EvaluationRunControllerTest extends TestCase
{
use RefreshDatabase;
public function test_cancel_requires_authentication(): void
{
$run = $this->createEvaluationRun();
$this->postJson("/api/evaluation-runs/{$run->id}/cancel")
->assertStatus(401);
}
public function test_non_admin_cannot_cancel(): void
{
$this->actingAsUser();
$run = $this->createEvaluationRun(['status' => 'RUNNING']);
$this->postJson("/api/evaluation-runs/{$run->id}/cancel")
->assertStatus(403);
}
public function test_admin_can_cancel_running_run(): void
{
$this->actingAsAdmin();
$run = $this->createEvaluationRun(['status' => 'RUNNING']);
$response = $this->postJson("/api/evaluation-runs/{$run->id}/cancel");
$response->assertStatus(200)
->assertJsonFragment(['status' => 'canceled']);
$this->assertDatabaseHas('evaluation_runs', [
'id' => $run->id,
'status' => 'CANCELED',
]);
}
public function test_cancel_rejects_finished_runs(): void
{
$this->actingAsAdmin();
$run = $this->createEvaluationRun(['status' => 'SUCCEEDED']);
$this->postJson("/api/evaluation-runs/{$run->id}/cancel")
->assertStatus(409);
}
public function test_admin_can_set_result_type_and_update_round(): void
{
$this->actingAsAdmin();
$run = $this->createEvaluationRun(['result_type' => null]);
$round = $run->round;
$response = $this->postJson("/api/evaluation-runs/{$run->id}/result-type", [
'result_type' => 'PRELIMINARY',
]);
$response->assertStatus(200)
->assertJsonFragment(['result_type' => 'PRELIMINARY']);
$round->refresh();
$this->assertSame($run->id, $round->preliminary_evaluation_run_id);
$this->assertNull($round->official_evaluation_run_id);
$this->assertNull($round->test_evaluation_run_id);
}
}