feat(daily-prep): trigger planning from inside the prep-log window with an empty-state hint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-06-04 10:01:27 +02:00
parent 26758b6e8a
commit 7d743f17c6
9 changed files with 55 additions and 36 deletions

View File

@@ -33,6 +33,7 @@ public abstract class StubWorkerClient : IWorkerClient
#pragma warning restore CS0067
public int ClearMyDayCalls { get; private set; }
public int RunDailyPrepNowCalls { get; private set; }
public void RaisePrepStarted() => PrepStartedEvent?.Invoke();
public void RaisePrepLine(string line) => PrepLineEvent?.Invoke(line);
@@ -71,7 +72,7 @@ public abstract class StubWorkerClient : IWorkerClient
public virtual Task QueuePlanningSubtasksAsync(string parentTaskId, CancellationToken ct = default) => Task.CompletedTask;
public virtual Task<string?> GetWeekReportAsync(DateOnly start, DateOnly end) => Task.FromResult<string?>(null);
public virtual Task<string> GenerateWeekReportAsync(DateOnly start, DateOnly end) => Task.FromResult("");
public virtual Task<bool> RunDailyPrepNowAsync() => Task.FromResult(false);
public virtual Task<bool> RunDailyPrepNowAsync() { RunDailyPrepNowCalls++; return Task.FromResult(false); }
public virtual Task ClearMyDayAsync() { ClearMyDayCalls++; return Task.CompletedTask; }
public virtual Task<AppSettingsDto?> GetAppSettingsAsync() => Task.FromResult<AppSettingsDto?>(null);
public virtual Task<List<DailyNoteDto>> GetDailyNotesAsync(DateOnly day) => Task.FromResult(new List<DailyNoteDto>());

View File

@@ -92,4 +92,20 @@ public class DetailsIslandPrepModeTests : IDisposable
Assert.NotEmpty(vm.PrepLog);
}
[Fact]
public async Task PlanDayCommand_calls_worker()
{
var stub = new DefaultStub();
var vm = NewDetailsVm(stub);
await vm.PlanDayCommand.ExecuteAsync(null);
Assert.Equal(1, stub.RunDailyPrepNowCalls);
}
[Fact]
public void ShowPrepEmptyState_true_when_empty_and_not_running()
{
var vm = NewDetailsVm(new DefaultStub());
Assert.True(vm.ShowPrepEmptyState);
}
}

View File

@@ -53,15 +53,4 @@ public class TasksIslandDailyPrepTests : IDisposable
Assert.Equal(1, stub.ClearMyDayCalls);
}
[Fact]
public async Task PrepareDayCommand_raises_PrepRequested()
{
var vm = NewTasksVm(new DefaultStub());
var raised = false;
vm.PrepRequested += () => raised = true;
await vm.PrepareDayCommand.ExecuteAsync(null);
Assert.True(raised);
}
}