Rename acceptance criteria checklist helper to mapper
This commit is contained in:
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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;
|
||||||
|
|
||||||
@@ -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,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(),
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user