Merge claudedo/38394081d47048fea82317c6c52e01a5

This commit is contained in:
mika kuns
2026-08-05 16:05:19 +02:00
28 changed files with 1318 additions and 20 deletions
@@ -117,4 +117,58 @@ public sealed class UsageGateAndRunModelTests : IDisposable
Assert.Null(reloaded.Model);
}
[Fact]
public async Task TaskRun_cache_token_fields_roundtrip_when_set()
{
var list = new ListEntity { Id = "l3", Name = "Test", CreatedAt = DateTime.UtcNow };
var task = new TaskEntity { Id = "t3", ListId = "l3", Title = "T", Status = TaskStatus.Idle, CreatedAt = DateTime.UtcNow };
var run = new TaskRunEntity
{
Id = "r3",
TaskId = "t3",
RunNumber = 1,
IsRetry = false,
Prompt = "do the thing",
CacheReadTokens = 12345,
CacheWriteTokens = 678,
};
_ctx.Lists.Add(list);
_ctx.Tasks.Add(task);
_ctx.TaskRuns.Add(run);
await _ctx.SaveChangesAsync();
await using var freshCtx = new ClaudeDoDbContext(
new DbContextOptionsBuilder<ClaudeDoDbContext>().UseSqlite($"Data Source={_dbPath}").Options);
var reloaded = await freshCtx.TaskRuns.AsNoTracking().FirstAsync(r => r.Id == "r3");
Assert.Equal(12345, reloaded.CacheReadTokens);
Assert.Equal(678, reloaded.CacheWriteTokens);
}
[Fact]
public async Task TaskRun_cache_token_fields_stay_null_when_not_set()
{
var list = new ListEntity { Id = "l4", Name = "Test", CreatedAt = DateTime.UtcNow };
var task = new TaskEntity { Id = "t4", ListId = "l4", Title = "T", Status = TaskStatus.Idle, CreatedAt = DateTime.UtcNow };
var run = new TaskRunEntity
{
Id = "r4",
TaskId = "t4",
RunNumber = 1,
IsRetry = false,
Prompt = "do the thing",
};
_ctx.Lists.Add(list);
_ctx.Tasks.Add(task);
_ctx.TaskRuns.Add(run);
await _ctx.SaveChangesAsync();
await using var freshCtx = new ClaudeDoDbContext(
new DbContextOptionsBuilder<ClaudeDoDbContext>().UseSqlite($"Data Source={_dbPath}").Options);
var reloaded = await freshCtx.TaskRuns.AsNoTracking().FirstAsync(r => r.Id == "r4");
Assert.Null(reloaded.CacheReadTokens);
Assert.Null(reloaded.CacheWriteTokens);
}
}