Hide assignee metadata when no visible assignments exist
This commit is contained in:
@@ -17,11 +17,14 @@ class UserAssignedTicketController extends ApiController
|
||||
public function __invoke(Request $request, User $user): JsonResponse
|
||||
{
|
||||
$viewer = $this->authenticatedUser($request);
|
||||
$assignedTicketsByProject = $this->listAssignedTicketsByVisibleProject->handle($viewer, $user);
|
||||
|
||||
return response()->json([
|
||||
'data' => $this->listAssignedTicketsByVisibleProject->handle($viewer, $user),
|
||||
'data' => $assignedTicketsByProject,
|
||||
'meta' => [
|
||||
'assignee' => UserResource::make($user)->resolve(),
|
||||
'assignee' => $assignedTicketsByProject === []
|
||||
? null
|
||||
: UserResource::make($user)->resolve(),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -1844,7 +1844,14 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"assignee": {
|
||||
"$ref": "#/components/schemas/User"
|
||||
"oneOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/User"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": ["assignee"]
|
||||
|
||||
@@ -77,4 +77,28 @@ class AssignedTicketsApiTest extends TestCase
|
||||
->assertJsonCount(1, 'data.1.tickets')
|
||||
->assertJsonCount(2, 'data');
|
||||
}
|
||||
|
||||
public function test_assignee_metadata_is_hidden_when_no_visible_assigned_tickets_exist(): void
|
||||
{
|
||||
$viewer = User::factory()->create();
|
||||
$assignee = User::factory()->create([
|
||||
'email' => 'assignee@example.test',
|
||||
'name' => 'Hidden Assignee',
|
||||
]);
|
||||
$hiddenProject = Project::factory()->create();
|
||||
|
||||
Ticket::factory()->create([
|
||||
'assignee_user_id' => $assignee->id,
|
||||
'project_id' => $hiddenProject->id,
|
||||
'sequence_number' => 42,
|
||||
'ticket_key' => 'HID-42',
|
||||
'title' => 'Invisible assignment',
|
||||
]);
|
||||
|
||||
$this->withApplicationKey($viewer)
|
||||
->getJson(route('api.users.assigned-tickets', $assignee))
|
||||
->assertOk()
|
||||
->assertJsonPath('data', [])
|
||||
->assertJsonPath('meta.assignee', null);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user