feat(data): add TaskRepository.ResetToManualAsync
This commit is contained in:
@@ -98,6 +98,17 @@ public sealed class TaskRepository
|
|||||||
.SetProperty(t => t.Result, resultText), ct);
|
.SetProperty(t => t.Result, resultText), ct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task ResetToManualAsync(string taskId, CancellationToken ct = default)
|
||||||
|
{
|
||||||
|
await _context.Tasks
|
||||||
|
.Where(t => t.Id == taskId)
|
||||||
|
.ExecuteUpdateAsync(s => s
|
||||||
|
.SetProperty(t => t.Status, TaskStatus.Manual)
|
||||||
|
.SetProperty(t => t.StartedAt, (DateTime?)null)
|
||||||
|
.SetProperty(t => t.FinishedAt, (DateTime?)null)
|
||||||
|
.SetProperty(t => t.Result, (string?)null), ct);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Tags
|
#region Tags
|
||||||
|
|||||||
@@ -198,6 +198,35 @@ public sealed class TaskRepositoryTests : IDisposable
|
|||||||
Assert.Equal(TaskStatus.Done, d!.Status);
|
Assert.Equal(TaskStatus.Done, d!.Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ResetToManualAsync_ClearsResultFields_AndSetsStatusManual()
|
||||||
|
{
|
||||||
|
var listId = await CreateListAsync();
|
||||||
|
var task = new TaskEntity
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid().ToString(),
|
||||||
|
ListId = listId,
|
||||||
|
Title = "T",
|
||||||
|
CreatedAt = DateTime.UtcNow,
|
||||||
|
Status = TaskStatus.Failed,
|
||||||
|
StartedAt = DateTime.UtcNow.AddMinutes(-5),
|
||||||
|
FinishedAt = DateTime.UtcNow,
|
||||||
|
Result = "boom",
|
||||||
|
CommitType = "feat",
|
||||||
|
};
|
||||||
|
await _tasks.AddAsync(task);
|
||||||
|
|
||||||
|
await _tasks.ResetToManualAsync(task.Id);
|
||||||
|
|
||||||
|
using var readCtx = _db.CreateContext();
|
||||||
|
var after = await new TaskRepository(readCtx).GetByIdAsync(task.Id);
|
||||||
|
Assert.NotNull(after);
|
||||||
|
Assert.Equal(TaskStatus.Manual, after!.Status);
|
||||||
|
Assert.Null(after.StartedAt);
|
||||||
|
Assert.Null(after.FinishedAt);
|
||||||
|
Assert.Null(after.Result);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task GetEffectiveTagsAsync_Returns_Union_Of_ListTags_And_TaskTags()
|
public async Task GetEffectiveTagsAsync_Returns_Union_Of_ListTags_And_TaskTags()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user