fix(claude-do): merge Make the merge modal non-modal so a running merge no longer
ClaudeDo-Task: b2b4c74fc265435b9f083f56d0e47546
This commit is contained in:
@@ -335,4 +335,30 @@ public class DiffViewerViewModelTests
|
||||
Assert.Contains("planning task not found", vm.CombinedWarning);
|
||||
Assert.Equal("", vm.DisplayedDiff);
|
||||
}
|
||||
|
||||
// ── Merge button: the modal is non-modal, the command spans its lifetime ──
|
||||
|
||||
[Fact]
|
||||
public async Task Merge_WhileMergeWindowOpen_DoesNotStartSecondMerge()
|
||||
{
|
||||
var worker = new FakePlanningWorker();
|
||||
var vm = new DiffViewerViewModel(null!, worker, TestSettings());
|
||||
vm.ConfigureWorktree("/wt", "main", "task-1", "Title");
|
||||
var windowClosed = new TaskCompletionSource();
|
||||
var resolved = 0;
|
||||
var shown = 0;
|
||||
vm.ResolveMergeVm = () => { resolved++; return new MergeModalViewModel(worker, new MergeCoordinator()); };
|
||||
vm.ShowMergeModal = _ => { shown++; return windowClosed.Task; };
|
||||
|
||||
var first = vm.MergeCommand.ExecuteAsync(null);
|
||||
while (shown == 0) await Task.Delay(10);
|
||||
|
||||
Assert.False(vm.MergeCommand.CanExecute(null));
|
||||
Assert.Equal(1, resolved);
|
||||
Assert.Equal(1, shown);
|
||||
|
||||
windowClosed.SetResult();
|
||||
await first;
|
||||
Assert.True(vm.MergeCommand.CanExecute(null));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user