feat(worker): allow update_task_status to set Cancelled

This commit is contained in:
Mika Kuns
2026-07-27 15:02:50 +02:00
parent ec10b06848
commit cc823ec4f6
4 changed files with 47 additions and 7 deletions
@@ -380,6 +380,32 @@ public sealed class ExternalMcpServiceTests : IDisposable
Assert.Equal(TaskStatus.WaitingForReview, reloadedParent!.Status);
}
[Fact]
public async Task UpdateTaskStatus_Cancelled_CancelsAnIdleTask()
{
var listId = await SeedListAsync();
var task = await SeedTaskAsync(listId, status: TaskStatus.Idle);
var sut = BuildSut(CreateQueue());
var dto = await sut.UpdateTaskStatus(task.Id, "Cancelled", CancellationToken.None);
Assert.Equal("Cancelled", dto.Status);
var loaded = await _tasks.GetByIdAsync(task.Id);
Assert.Equal(TaskStatus.Cancelled, loaded!.Status);
}
[Fact]
public async Task UpdateTaskStatus_Done_StillRejected()
{
var listId = await SeedListAsync();
var task = await SeedTaskAsync(listId, status: TaskStatus.Idle);
var sut = BuildSut(CreateQueue());
var ex = await Assert.ThrowsAsync<InvalidOperationException>(
() => sut.UpdateTaskStatus(task.Id, "Done", CancellationToken.None));
Assert.Contains("not settable externally", ex.Message);
}
private ExternalMcpService NewService() => BuildSut(CreateQueue());
private async Task<string> SeedIdleTask(string title = "t")