feat(ui): add batch-merge row state to worktrees cockpit VM
This commit is contained in:
@@ -12,6 +12,8 @@ using TaskStatus = ClaudeDo.Data.Models.TaskStatus;
|
||||
|
||||
namespace ClaudeDo.Ui.ViewModels.Modals;
|
||||
|
||||
public enum BatchMergeOutcome { None, Merging, Merged, Conflict, Blocked, Failed }
|
||||
|
||||
public sealed partial class WorktreeOverviewRowViewModel : ViewModelBase
|
||||
{
|
||||
[ObservableProperty] private string _taskId = "";
|
||||
@@ -27,6 +29,14 @@ public sealed partial class WorktreeOverviewRowViewModel : ViewModelBase
|
||||
[ObservableProperty][NotifyPropertyChangedFor(nameof(AgeText))] private DateTime _createdAt;
|
||||
[ObservableProperty] private bool _pathExistsOnDisk;
|
||||
[ObservableProperty] private bool _isSelected;
|
||||
[ObservableProperty] private bool _isChecked;
|
||||
[ObservableProperty]
|
||||
[NotifyPropertyChangedFor(nameof(IsConflict))]
|
||||
[NotifyPropertyChangedFor(nameof(HasOutcome))]
|
||||
private BatchMergeOutcome _mergeOutcome;
|
||||
|
||||
public bool IsConflict => MergeOutcome == BatchMergeOutcome.Conflict;
|
||||
public bool HasOutcome => MergeOutcome != BatchMergeOutcome.None;
|
||||
|
||||
public string AgeText => FormatAge(DateTime.UtcNow - CreatedAt);
|
||||
public bool IsActive => State == WorktreeState.Active;
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using ClaudeDo.Data.Models;
|
||||
using ClaudeDo.Ui.ViewModels.Modals;
|
||||
using TaskStatus = ClaudeDo.Data.Models.TaskStatus;
|
||||
using Xunit;
|
||||
|
||||
namespace ClaudeDo.Ui.Tests.ViewModels;
|
||||
|
||||
public class WorktreesOverviewBatchMergeTests
|
||||
{
|
||||
private static WorktreeOverviewRowViewModel ActiveRow(string id) => new()
|
||||
{
|
||||
TaskId = id,
|
||||
TaskTitle = $"Task {id}",
|
||||
TaskStatus = TaskStatus.WaitingForReview,
|
||||
State = WorktreeState.Active,
|
||||
};
|
||||
|
||||
[Fact]
|
||||
public void Row_outcome_helpers_reflect_state()
|
||||
{
|
||||
var row = ActiveRow("a");
|
||||
Assert.Equal(BatchMergeOutcome.None, row.MergeOutcome);
|
||||
Assert.False(row.IsConflict);
|
||||
|
||||
row.MergeOutcome = BatchMergeOutcome.Conflict;
|
||||
Assert.True(row.IsConflict);
|
||||
|
||||
row.MergeOutcome = BatchMergeOutcome.Merged;
|
||||
Assert.False(row.IsConflict);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user