Rename acceptance criteria checklist helper to mapper
linter / quality (pull_request) Successful in 1m22s
tests / ci (8.4) (pull_request) Successful in 1m32s

This commit is contained in:
2026-05-19 23:35:14 +00:00
parent 6502e9cc5c
commit 456b165987
8 changed files with 20 additions and 20 deletions
+3 -3
View File
@@ -4,7 +4,7 @@ namespace App\Actions\Tickets;
use App\Actions\Notifications\BuildTicketCreatedPayload; use App\Actions\Notifications\BuildTicketCreatedPayload;
use App\Actions\Notifications\TicketCreated; use App\Actions\Notifications\TicketCreated;
use App\Actions\Tickets\Support\AcceptanceCriteriaChecklist; use App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper;
use App\Enums\TicketWorklogEntryType; use App\Enums\TicketWorklogEntryType;
use App\Models\Project; use App\Models\Project;
use App\Models\Ticket; use App\Models\Ticket;
@@ -40,7 +40,7 @@ class CreateProjectTicket
public function handle(Project $project, array $attributes, ?User $actor = null): Ticket public function handle(Project $project, array $attributes, ?User $actor = null): Ticket
{ {
return DB::transaction(function () use ($actor, $attributes, $project): Ticket { return DB::transaction(function () use ($actor, $attributes, $project): Ticket {
$acceptanceCriteria = AcceptanceCriteriaChecklist::normalize( $acceptanceCriteria = AcceptanceCriteriaChecklistMapper::normalize(
Arr::get($attributes, 'acceptance_criteria'), Arr::get($attributes, 'acceptance_criteria'),
); );
$nextSequenceNumber = (int) Ticket::query() $nextSequenceNumber = (int) Ticket::query()
@@ -64,7 +64,7 @@ class CreateProjectTicket
'story_points' => Arr::get($attributes, 'story_points'), 'story_points' => Arr::get($attributes, 'story_points'),
]); ]);
AcceptanceCriteriaChecklist::syncTicket($ticket, $acceptanceCriteria); AcceptanceCriteriaChecklistMapper::syncTicket($ticket, $acceptanceCriteria);
$occurredAt = CarbonImmutable::now(); $occurredAt = CarbonImmutable::now();
@@ -7,7 +7,7 @@ use App\Models\Ticket;
use Illuminate\Database\Eloquent\Collection as EloquentCollection; use Illuminate\Database\Eloquent\Collection as EloquentCollection;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
class AcceptanceCriteriaChecklist class AcceptanceCriteriaChecklistMapper
{ {
public const MAX_INDENT_LEVEL = 8; public const MAX_INDENT_LEVEL = 8;
+4 -4
View File
@@ -2,7 +2,7 @@
namespace App\Actions\Tickets; namespace App\Actions\Tickets;
use App\Actions\Tickets\Support\AcceptanceCriteriaChecklist; use App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper;
use App\Enums\TicketWorklogEntryType; use App\Enums\TicketWorklogEntryType;
use App\Models\Ticket; use App\Models\Ticket;
use App\Models\TicketFieldDefinition; use App\Models\TicketFieldDefinition;
@@ -49,7 +49,7 @@ class UpdateProjectTicket
array $validated, array $validated,
): bool { ): bool {
$fieldValueAttributes = Arr::get($validated, 'field_values', []); $fieldValueAttributes = Arr::get($validated, 'field_values', []);
$nextAcceptanceCriteria = AcceptanceCriteriaChecklist::normalize( $nextAcceptanceCriteria = AcceptanceCriteriaChecklistMapper::normalize(
Arr::get($validated, 'acceptance_criteria'), Arr::get($validated, 'acceptance_criteria'),
); );
$ticketAttributes = $this->buildTicketAttributes($ticket, $validated); $ticketAttributes = $this->buildTicketAttributes($ticket, $validated);
@@ -86,7 +86,7 @@ class UpdateProjectTicket
/** @var Collection<int, TicketFieldValue> $existingFieldValues */ /** @var Collection<int, TicketFieldValue> $existingFieldValues */
$existingFieldValues = $ticket->fieldValues $existingFieldValues = $ticket->fieldValues
->keyBy('ticket_field_definition_id'); ->keyBy('ticket_field_definition_id');
$currentAcceptanceCriteria = AcceptanceCriteriaChecklist::fromModels($ticket->acceptanceCriteria); $currentAcceptanceCriteria = AcceptanceCriteriaChecklistMapper::fromModels($ticket->acceptanceCriteria);
$changes = []; $changes = [];
$summaryLabels = []; $summaryLabels = [];
@@ -193,7 +193,7 @@ class UpdateProjectTicket
} }
if ($currentAcceptanceCriteria !== $nextAcceptanceCriteria) { if ($currentAcceptanceCriteria !== $nextAcceptanceCriteria) {
AcceptanceCriteriaChecklist::syncTicket($ticket, $nextAcceptanceCriteria); AcceptanceCriteriaChecklistMapper::syncTicket($ticket, $nextAcceptanceCriteria);
} }
$fieldValueChangeSet = $this->syncProjectTicketFieldValues->handle( $fieldValueChangeSet = $this->syncProjectTicketFieldValues->handle(
@@ -2,7 +2,7 @@
namespace App\Http\Requests; namespace App\Http\Requests;
use App\Actions\Tickets\Support\AcceptanceCriteriaChecklist; use App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper;
use App\Models\Project; use App\Models\Project;
use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
@@ -30,7 +30,7 @@ class StoreProjectTicketRequest extends FormRequest
} }
$this->merge([ $this->merge([
'acceptance_criteria' => AcceptanceCriteriaChecklist::normalize( 'acceptance_criteria' => AcceptanceCriteriaChecklistMapper::normalize(
$acceptanceCriteria, $acceptanceCriteria,
), ),
]); ]);
@@ -51,7 +51,7 @@ class StoreProjectTicketRequest extends FormRequest
'acceptance_criteria.*' => ['array'], 'acceptance_criteria.*' => ['array'],
'acceptance_criteria.*.text' => ['required', 'string'], 'acceptance_criteria.*.text' => ['required', 'string'],
'acceptance_criteria.*.checked' => ['required', 'boolean'], 'acceptance_criteria.*.checked' => ['required', 'boolean'],
'acceptance_criteria.*.indent' => ['required', 'integer', 'min:0', 'max:'.AcceptanceCriteriaChecklist::MAX_INDENT_LEVEL], 'acceptance_criteria.*.indent' => ['required', 'integer', 'min:0', 'max:'.AcceptanceCriteriaChecklistMapper::MAX_INDENT_LEVEL],
'assignee_user_id' => ['nullable', 'integer', Rule::exists('users', 'id')], 'assignee_user_id' => ['nullable', 'integer', Rule::exists('users', 'id')],
'description' => ['nullable', 'string'], 'description' => ['nullable', 'string'],
'ticket_priority_id' => [ 'ticket_priority_id' => [
@@ -3,7 +3,7 @@
namespace App\Http\Requests; namespace App\Http\Requests;
use App\Actions\Permissions\PermissionService; use App\Actions\Permissions\PermissionService;
use App\Actions\Tickets\Support\AcceptanceCriteriaChecklist; use App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper;
use App\Enums\Permission; use App\Enums\Permission;
use App\Models\Project; use App\Models\Project;
use App\Models\Ticket; use App\Models\Ticket;
@@ -36,7 +36,7 @@ class UpdateProjectTicketRequest extends FormRequest
} }
$this->merge([ $this->merge([
'acceptance_criteria' => AcceptanceCriteriaChecklist::normalize( 'acceptance_criteria' => AcceptanceCriteriaChecklistMapper::normalize(
$acceptanceCriteria, $acceptanceCriteria,
), ),
]); ]);
@@ -57,7 +57,7 @@ class UpdateProjectTicketRequest extends FormRequest
'acceptance_criteria.*' => ['array'], 'acceptance_criteria.*' => ['array'],
'acceptance_criteria.*.text' => ['required', 'string'], 'acceptance_criteria.*.text' => ['required', 'string'],
'acceptance_criteria.*.checked' => ['required', 'boolean'], 'acceptance_criteria.*.checked' => ['required', 'boolean'],
'acceptance_criteria.*.indent' => ['required', 'integer', 'min:0', 'max:'.AcceptanceCriteriaChecklist::MAX_INDENT_LEVEL], 'acceptance_criteria.*.indent' => ['required', 'integer', 'min:0', 'max:'.AcceptanceCriteriaChecklistMapper::MAX_INDENT_LEVEL],
'assignee_user_id' => ['nullable', 'integer', Rule::exists('users', 'id')], 'assignee_user_id' => ['nullable', 'integer', Rule::exists('users', 'id')],
'author_user_id' => ['nullable', 'integer', Rule::exists('users', 'id')], 'author_user_id' => ['nullable', 'integer', Rule::exists('users', 'id')],
'blocked_comment' => ['nullable', 'string'], 'blocked_comment' => ['nullable', 'string'],
+2 -2
View File
@@ -2,7 +2,7 @@
namespace App\Http\Resources; namespace App\Http\Resources;
use App\Actions\Tickets\Support\AcceptanceCriteriaChecklist; use App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
@@ -17,7 +17,7 @@ class TicketResource extends JsonResource
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'acceptance_criteria' => AcceptanceCriteriaChecklist::fromModels( 'acceptance_criteria' => AcceptanceCriteriaChecklistMapper::fromModels(
$this->relationLoaded('acceptanceCriteria') $this->relationLoaded('acceptanceCriteria')
? $this->acceptanceCriteria ? $this->acceptanceCriteria
: $this->acceptanceCriteria()->get(), : $this->acceptanceCriteria()->get(),
+2 -2
View File
@@ -3,7 +3,7 @@
namespace App\Mcp\Support; namespace App\Mcp\Support;
use App\Actions\Permissions\PermissionService; use App\Actions\Permissions\PermissionService;
use App\Actions\Tickets\Support\AcceptanceCriteriaChecklist; use App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper;
use App\Enums\Permission; use App\Enums\Permission;
use App\Http\Resources\ProjectResource; use App\Http\Resources\ProjectResource;
use App\Http\Resources\TicketResource; use App\Http\Resources\TicketResource;
@@ -224,7 +224,7 @@ class KanbanGitMcp
public function updatePayload(Ticket $ticket): array public function updatePayload(Ticket $ticket): array
{ {
return [ return [
'acceptance_criteria' => AcceptanceCriteriaChecklist::fromModels( 'acceptance_criteria' => AcceptanceCriteriaChecklistMapper::fromModels(
$ticket->relationLoaded('acceptanceCriteria') $ticket->relationLoaded('acceptanceCriteria')
? $ticket->acceptanceCriteria ? $ticket->acceptanceCriteria
: $ticket->acceptanceCriteria()->get(), : $ticket->acceptanceCriteria()->get(),
@@ -540,7 +540,7 @@ class ProjectTicketControllerTest extends TestCase
$this->assertEquals( $this->assertEquals(
$updatedAcceptanceCriteria, $updatedAcceptanceCriteria,
\App\Actions\Tickets\Support\AcceptanceCriteriaChecklist::fromModels($ticket->acceptanceCriteria), \App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper::fromModels($ticket->acceptanceCriteria),
); );
$this->assertDatabaseHas('acceptance_criteria', [ $this->assertDatabaseHas('acceptance_criteria', [
'ticket_id' => $ticket->id, 'ticket_id' => $ticket->id,
@@ -979,7 +979,7 @@ class ProjectTicketControllerTest extends TestCase
private function updatePayload(Ticket $ticket, array $overrides = []): array private function updatePayload(Ticket $ticket, array $overrides = []): array
{ {
return array_merge([ return array_merge([
'acceptance_criteria' => \App\Actions\Tickets\Support\AcceptanceCriteriaChecklist::fromModels( 'acceptance_criteria' => \App\Actions\Tickets\Support\AcceptanceCriteriaChecklistMapper::fromModels(
$ticket->acceptanceCriteria()->get(), $ticket->acceptanceCriteria()->get(),
), ),
'assignee_user_id' => $ticket->assignee_user_id, 'assignee_user_id' => $ticket->assignee_user_id,