codex ticket rework

This commit is contained in:
2026-04-13 01:04:06 +02:00
parent b3f2cc3afd
commit 182ed018d1
45 changed files with 1208 additions and 420 deletions
+33 -17
View File
@@ -9,8 +9,8 @@ use App\Models\TicketFieldDefinition;
use App\Models\TicketFieldValue;
use App\Models\TicketLink;
use App\Models\TicketLinkType;
use App\Models\TicketPriority;
use App\Models\TicketWorklogEntry;
use App\Models\User;
use Database\Seeders\BoardColumnSeeder;
use Database\Seeders\ProjectSeeder;
use Database\Seeders\ProjectTicketMetadataSeeder;
@@ -96,10 +96,7 @@ class TicketTest extends TestCase
app(InitializeProjectTicketMetadata::class)->handle($project);
$priority = TicketPriority::factory()->for($project)->create([
'name' => 'Medium',
'position' => 1,
]);
$priority = $project->ticketPriorities()->firstOrFail();
$ticket = Ticket::factory()->create([
'project_id' => $project->id,
@@ -111,7 +108,7 @@ class TicketTest extends TestCase
$fieldDefinition = TicketFieldDefinition::factory()->for($project)->create([
'field_type' => 'number',
'label' => 'Story Points',
'label' => 'Complexity',
'position' => 1,
]);
@@ -139,13 +136,16 @@ class TicketTest extends TestCase
app(InitializeProjectTicketMetadata::class)->handle($project);
$priority = TicketPriority::factory()->for($project)->create([
'name' => 'Medium',
'position' => 1,
]);
$priority = $project->ticketPriorities()->firstOrFail();
$taskType = $project->ticketTypes()->where('system_key', 'task')->firstOrFail();
$parentType = $project->ticketTypes()->where('system_key', 'parent')->firstOrFail();
$taskType = $project->ticketTypes()
->where('is_parent', false)
->orderBy('position')
->firstOrFail();
$parentType = $project->ticketTypes()
->where('is_parent', true)
->orderBy('position')
->firstOrFail();
$parentTicket = Ticket::factory()->create([
'project_id' => $project->id,
@@ -184,6 +184,22 @@ class TicketTest extends TestCase
$this->assertSame('Waiting for environment access.', $freshTicket->blocked_comment);
}
/**
* Ensure tickets expose their fixed assignee and author relations.
*/
public function test_ticket_assignee_and_author_relations_are_available(): void
{
$assignee = User::factory()->create();
$author = User::factory()->create();
$ticket = Ticket::factory()->create([
'assignee_user_id' => $assignee->id,
'author_user_id' => $author->id,
]);
$this->assertSame($assignee->id, $ticket->fresh()->assignee?->id);
$this->assertSame($author->id, $ticket->fresh()->author?->id);
}
/**
* Ensure tickets expose incoming and outgoing link relations.
*/
@@ -195,11 +211,11 @@ class TicketTest extends TestCase
app(InitializeProjectTicketMetadata::class)->handle($project);
$priority = TicketPriority::factory()->for($project)->create([
'name' => 'Medium',
'position' => 1,
]);
$taskType = $project->ticketTypes()->where('system_key', 'task')->firstOrFail();
$priority = $project->ticketPriorities()->firstOrFail();
$taskType = $project->ticketTypes()
->where('is_parent', false)
->orderBy('position')
->firstOrFail();
$sourceTicket = Ticket::factory()->create([
'project_id' => $project->id,