using System.ComponentModel; using ClaudeDo.Data.Models; using ClaudeDo.Data.Repositories; using ClaudeDo.Ui.Services; using TaskStatus = ClaudeDo.Data.Models.TaskStatus; namespace ClaudeDo.Ui.Tests; /// /// No-op base for tests. Override only the members a /// test actually exercises; everything else returns a benign default. Keeping the /// full interface surface here means new interface members only break this file. /// public abstract class StubWorkerClient : IWorkerClient { #pragma warning disable CS0067 // interface-mandated events; tests don't raise them public event PropertyChangedEventHandler? PropertyChanged; public event Action? TaskStartedEvent; public event Action? TaskFinishedEvent; public event Action? TaskUpdatedEvent; public event Action? ConnectionRestoredEvent; public event Action? WorktreeUpdatedEvent; public event Action? ListUpdatedEvent; public event Action? TaskMessageEvent; public event Action? PlanningMergeStartedEvent; public event Action? PlanningSubtaskMergedEvent; public event Action>? PlanningMergeConflictEvent; public event Action? PlanningMergeAbortedEvent; public event Action? PlanningCompletedEvent; #pragma warning restore CS0067 public virtual bool IsConnected => false; public virtual Task WakeQueueAsync() => Task.CompletedTask; public virtual Task RunNowAsync(string taskId) => Task.CompletedTask; public virtual Task ContinueTaskAsync(string taskId, string followUpPrompt) => Task.CompletedTask; public virtual Task ResetTaskAsync(string taskId) => Task.CompletedTask; public virtual Task CancelTaskAsync(string taskId) => Task.CompletedTask; public virtual Task> GetAgentsAsync() => Task.FromResult(new List()); public virtual Task GetListConfigAsync(string listId) => Task.FromResult(null); public virtual Task UpdateTaskAgentSettingsAsync(UpdateTaskAgentSettingsDto dto) => Task.CompletedTask; public virtual Task SetTaskStatusAsync(string taskId, TaskStatus status) => Task.CompletedTask; public virtual Task ApproveReviewAsync(string taskId) => Task.CompletedTask; public virtual Task RejectReviewToQueueAsync(string taskId, string feedback) => Task.CompletedTask; public virtual Task RejectReviewToIdleAsync(string taskId) => Task.CompletedTask; public virtual Task CancelReviewAsync(string taskId) => Task.CompletedTask; public virtual Task StartPlanningSessionAsync(string taskId, CancellationToken ct = default) => Task.CompletedTask; public virtual Task OpenInteractiveTerminalAsync(string taskId, CancellationToken ct = default) => Task.CompletedTask; public virtual Task ResumePlanningSessionAsync(string taskId, CancellationToken ct = default) => Task.CompletedTask; public virtual Task DiscardPlanningSessionAsync(string taskId, bool dequeueQueuedChildren = false, CancellationToken ct = default) => Task.FromResult(new DiscardPlanningOutcome(DiscardPlanningResult.Discarded, 0, 0)); public virtual Task FinalizePlanningSessionAsync(string taskId, bool queueAgentTasks = true, CancellationToken ct = default) => Task.CompletedTask; public virtual Task GetPendingDraftCountAsync(string taskId, CancellationToken ct = default) => Task.FromResult(0); public virtual Task GetMergeTargetsAsync(string taskId) => Task.FromResult(null); public virtual Task> GetPlanningAggregateAsync(string planningTaskId) => Task.FromResult>(Array.Empty()); public virtual Task BuildPlanningIntegrationBranchAsync(string planningTaskId, string targetBranch) => Task.FromResult(null); public virtual Task MergeAllPlanningAsync(string planningTaskId, string targetBranch) => Task.CompletedTask; public virtual Task ContinuePlanningMergeAsync(string planningTaskId) => Task.CompletedTask; public virtual Task AbortPlanningMergeAsync(string planningTaskId) => Task.CompletedTask; public virtual Task QueuePlanningSubtasksAsync(string parentTaskId, CancellationToken ct = default) => Task.CompletedTask; public virtual Task GetWeekReportAsync(DateOnly start, DateOnly end) => Task.FromResult(null); public virtual Task GenerateWeekReportAsync(DateOnly start, DateOnly end) => Task.FromResult(""); public virtual Task RunDailyPrepNowAsync() => Task.FromResult(false); public virtual Task GetAppSettingsAsync() => Task.FromResult(null); public virtual Task> GetDailyNotesAsync(DateOnly day) => Task.FromResult(new List()); public virtual Task AddDailyNoteAsync(DateOnly day, string text) => Task.FromResult(null); public virtual Task UpdateDailyNoteAsync(string id, string text) => Task.CompletedTask; public virtual Task DeleteDailyNoteAsync(string id) => Task.CompletedTask; protected void RaisePropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); }