fix: return ticket queue outcomes to web clients
This commit is contained in:
@@ -4275,9 +4275,9 @@ async fn scoped_queue_ticket(
|
|||||||
State(api): State<WorkspaceApi>,
|
State(api): State<WorkspaceApi>,
|
||||||
AxumPath(path): AxumPath<ScopedRecordPath>,
|
AxumPath(path): AxumPath<ScopedRecordPath>,
|
||||||
Json(_request): Json<BrowserQueueTicketRequest>,
|
Json(_request): Json<BrowserQueueTicketRequest>,
|
||||||
) -> ApiResult<Json<TicketDetail>> {
|
) -> ApiResult<Json<ticket::TicketQueueOutcome>> {
|
||||||
validate_workspace_scope(&api, &path.workspace_id)?;
|
validate_workspace_scope(&api, &path.workspace_id)?;
|
||||||
let _ = execute_ticket_rest_operation(
|
let result = execute_ticket_rest_operation(
|
||||||
&api,
|
&api,
|
||||||
&path.workspace_id,
|
&path.workspace_id,
|
||||||
HeaderMap::new(),
|
HeaderMap::new(),
|
||||||
@@ -4287,8 +4287,10 @@ async fn scoped_queue_ticket(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let Json(ticket) = browser_ticket_detail(&api, &path.id)?;
|
ticket_rest_result(result, |result| match result {
|
||||||
Ok(Json(ticket))
|
TicketBackendOperationResult::QueueOutcome(outcome) => Some(outcome),
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn scoped_close_ticket(
|
async fn scoped_close_ticket(
|
||||||
@@ -18937,13 +18939,20 @@ mod tests {
|
|||||||
assert_eq!(ready_detail.relations.blockers.len(), 1);
|
assert_eq!(ready_detail.relations.blockers.len(), 1);
|
||||||
assert_eq!(ready_detail.relations.blockers[0].reason_kind, "depends_on");
|
assert_eq!(ready_detail.relations.blockers[0].reason_kind, "depends_on");
|
||||||
|
|
||||||
let Json(queued) = scoped_queue_ticket(
|
let Json(queue_outcome) = scoped_queue_ticket(
|
||||||
State(api.clone()),
|
State(api.clone()),
|
||||||
AxumPath(path()),
|
AxumPath(path()),
|
||||||
Json(BrowserQueueTicketRequest {}),
|
Json(BrowserQueueTicketRequest {}),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
assert_eq!(queue_outcome.requested_ticket, ticket_id);
|
||||||
|
assert_eq!(queue_outcome.queued_tickets.len(), 2);
|
||||||
|
assert!(queue_outcome.queued_tickets.contains(&related_ticket_id));
|
||||||
|
assert!(queue_outcome.queued_tickets.contains(&ticket_id));
|
||||||
|
let Json(queued) = scoped_get_ticket(State(api.clone()), AxumPath(path()))
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
assert_eq!(queued.state, "queued");
|
assert_eq!(queued.state, "queued");
|
||||||
assert_eq!(queued.queued_by.as_deref(), Some("workspace-web"));
|
assert_eq!(queued.queued_by.as_deref(), Some("workspace-web"));
|
||||||
assert_eq!(queued.relations.blockers.len(), 1);
|
assert_eq!(queued.relations.blockers.len(), 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user