fix(claude-do): merge fix(worker): WeekReportService durch PermissionModeResolver

ClaudeDo-Task: b4198327-6045-451c-abf1-dbabad88e91a
This commit is contained in:
mika kuns
2026-09-10 13:34:20 +02:00
2 changed files with 30 additions and 3 deletions
@@ -26,9 +26,10 @@ public class WeekReportServiceTests : IDisposable
private sealed class FakeClaude : IClaudeProcess
{
public int Calls;
public IReadOnlyList<string>? LastArgs;
public RunResult Next = new() { ExitCode = 0, ResultMarkdown = "## Bericht" };
public Task<RunResult> RunAsync(IReadOnlyList<string> args, string prompt, string wd, Func<string, Task> onLine, CancellationToken ct)
{ Calls++; return Task.FromResult(Next); }
{ Calls++; LastArgs = args; return Task.FromResult(Next); }
}
private WeekReportService Make(FakeReader reader, FakeClaude claude) =>
@@ -65,6 +66,32 @@ public class WeekReportServiceTests : IDisposable
Assert.Equal(md, await svc.GetStoredAsync(Start, End));
}
[Fact]
public async Task HaikuDefaultModel_RoutesPermissionModeThroughResolver()
{
using (var ctx = _db.CreateContext())
{
var repo = new AppSettingsRepository(ctx);
var settings = await repo.GetAsync();
settings.DefaultModel = "haiku";
await repo.UpdateAsync(settings);
}
var activityRepo = new RepoActivity { RepoPath = @"C:\Dev\App" };
var day = new DayActivity { Date = new DateOnly(2026, 6, 1) };
day.Prompts.Add("x");
activityRepo.Days.Add(day);
var claude = new FakeClaude();
var svc = Make(new FakeReader { Result = new[] { activityRepo } }, claude);
await svc.GenerateAsync(Start, End);
Assert.NotNull(claude.LastArgs);
var modeIndex = claude.LastArgs!.ToList().IndexOf("--permission-mode") + 1;
Assert.Equal(PermissionModeResolver.Resolve("haiku", "auto"), claude.LastArgs[modeIndex]);
Assert.NotEqual("auto", claude.LastArgs[modeIndex]);
}
[Fact]
public async Task ClaudeFailure_Throws_AndDoesNotStore()
{