chore(claude-do): refactor(ui): DetailsIslandViewModel (1431 Zeilen) in Sektio
Kontext: src/ClaudeDo.Ui/ViewModels/Islands/DetailsIslandViewModel.cs ist mit 1431 Zeilen ein God-VM mit ~12 Concerns (Log-Streaming, Titel/Description-Editing, Subtasks, Child-Outcomes, Merge-Preview/-Targets, Diff, Agent-Settings-Overrides, Notes-Mode, Prep-Mode, Tabs, Session-Outcome/Roadblocks, Worktree-Info). Jedes neue Feature landet dort. Änderungen — drei klar abgrenzbare Sektionen als ei ClaudeDo-Task: 483e419f-1ec8-46ba-986b-8b90d6596b49
This commit is contained in:
@@ -77,11 +77,11 @@ public class DetailsIslandConflictSeamTests : IDisposable
|
||||
|
||||
var vm = BuildVm(new ConflictApproveWorkerClient());
|
||||
vm.Bind(new TaskRowViewModel { Id = taskId, Status = TaskStatus.WaitingForReview });
|
||||
vm.SelectedMergeTarget = "main";
|
||||
vm.Merge.SelectedMergeTarget = "main";
|
||||
|
||||
string? capturedTaskId = null;
|
||||
string? capturedTarget = null;
|
||||
vm.RequestConflictResolution = (tid, target) =>
|
||||
vm.Merge.RequestConflictResolution = (tid, target) =>
|
||||
{
|
||||
capturedTaskId = tid;
|
||||
capturedTarget = target;
|
||||
|
||||
@@ -140,11 +140,11 @@ public class DetailsIslandPlanningTests : IDisposable
|
||||
|
||||
// Wait for the background load to settle
|
||||
var deadline = DateTime.UtcNow.AddSeconds(5);
|
||||
while (DateTime.UtcNow < deadline && vm.MergeTargetBranches.Count == 0)
|
||||
while (DateTime.UtcNow < deadline && vm.Merge.MergeTargetBranches.Count == 0)
|
||||
await Task.Delay(20);
|
||||
|
||||
Assert.Contains("main", vm.MergeTargetBranches);
|
||||
Assert.Contains("dev", vm.MergeTargetBranches);
|
||||
Assert.Equal("main", vm.SelectedMergeTarget);
|
||||
Assert.Contains("main", vm.Merge.MergeTargetBranches);
|
||||
Assert.Contains("dev", vm.Merge.MergeTargetBranches);
|
||||
Assert.Equal("main", vm.Merge.SelectedMergeTarget);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ public class DetailsIslandPrepModeTests : IDisposable
|
||||
|
||||
stub.RaisePrepLine("{\"type\":\"assistant\",\"message\":{\"content\":[{\"type\":\"text\",\"text\":\"hi\"}]}}");
|
||||
|
||||
Assert.NotEmpty(vm.PrepLog);
|
||||
Assert.NotEmpty(vm.Prep.PrepLog);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -88,9 +88,9 @@ public class DetailsIslandPrepModeTests : IDisposable
|
||||
var vm = NewDetailsVm(stub);
|
||||
|
||||
vm.ShowPrep();
|
||||
await vm.LoadLastPrepLogIfEmptyAsync();
|
||||
await vm.Prep.LoadLastPrepLogIfEmptyAsync();
|
||||
|
||||
Assert.NotEmpty(vm.PrepLog);
|
||||
Assert.NotEmpty(vm.Prep.PrepLog);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -98,7 +98,7 @@ public class DetailsIslandPrepModeTests : IDisposable
|
||||
{
|
||||
var stub = new DefaultStub();
|
||||
var vm = NewDetailsVm(stub);
|
||||
await vm.PlanDayCommand.ExecuteAsync(null);
|
||||
await vm.Prep.PlanDayCommand.ExecuteAsync(null);
|
||||
Assert.Equal(1, stub.RunDailyPrepNowCalls);
|
||||
}
|
||||
|
||||
@@ -106,6 +106,6 @@ public class DetailsIslandPrepModeTests : IDisposable
|
||||
public void ShowPrepEmptyState_true_when_empty_and_not_running()
|
||||
{
|
||||
var vm = NewDetailsVm(new DefaultStub());
|
||||
Assert.True(vm.ShowPrepEmptyState);
|
||||
Assert.True(vm.Prep.ShowPrepEmptyState);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user