75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
using ClaudeDo.Data.Models;
|
|
using ClaudeDo.Data.Repositories;
|
|
using ClaudeDo.Worker.Tests.Infrastructure;
|
|
|
|
namespace ClaudeDo.Worker.Tests.Repositories;
|
|
|
|
public class AppSettingsRepositoryTests : IDisposable
|
|
{
|
|
private readonly DbFixture _db = new();
|
|
|
|
public void Dispose() => _db.Dispose();
|
|
|
|
[Fact]
|
|
public async Task GetAsync_Returns_Seeded_Defaults()
|
|
{
|
|
using var ctx = _db.CreateContext();
|
|
var repo = new AppSettingsRepository(ctx);
|
|
|
|
var row = await repo.GetAsync();
|
|
|
|
Assert.Equal(AppSettingsEntity.SingletonId, row.Id);
|
|
Assert.Equal("sonnet", row.DefaultModel);
|
|
Assert.Equal(100, row.DefaultMaxTurns);
|
|
Assert.Equal("bypassPermissions", row.DefaultPermissionMode);
|
|
Assert.Equal("sibling", row.WorktreeStrategy);
|
|
Assert.Null(row.CentralWorktreeRoot);
|
|
Assert.False(row.WorktreeAutoCleanupEnabled);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task UpdateAsync_Persists_And_RoundTrips()
|
|
{
|
|
using (var ctx = _db.CreateContext())
|
|
{
|
|
var repo = new AppSettingsRepository(ctx);
|
|
await repo.UpdateAsync(new AppSettingsEntity
|
|
{
|
|
DefaultClaudeInstructions = "be terse",
|
|
DefaultModel = "opus",
|
|
DefaultMaxTurns = 42,
|
|
DefaultPermissionMode = "acceptEdits",
|
|
WorktreeStrategy = "central",
|
|
CentralWorktreeRoot = "C:/worktrees",
|
|
WorktreeAutoCleanupEnabled = true,
|
|
WorktreeAutoCleanupDays = 14,
|
|
});
|
|
}
|
|
|
|
using var readCtx = _db.CreateContext();
|
|
var readRepo = new AppSettingsRepository(readCtx);
|
|
var row = await readRepo.GetAsync();
|
|
|
|
Assert.Equal("be terse", row.DefaultClaudeInstructions);
|
|
Assert.Equal("opus", row.DefaultModel);
|
|
Assert.Equal(42, row.DefaultMaxTurns);
|
|
Assert.Equal("acceptEdits", row.DefaultPermissionMode);
|
|
Assert.Equal("central", row.WorktreeStrategy);
|
|
Assert.Equal("C:/worktrees", row.CentralWorktreeRoot);
|
|
Assert.True(row.WorktreeAutoCleanupEnabled);
|
|
Assert.Equal(14, row.WorktreeAutoCleanupDays);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task UpdateAsync_Blank_CentralRoot_Stored_As_Null()
|
|
{
|
|
using var ctx = _db.CreateContext();
|
|
var repo = new AppSettingsRepository(ctx);
|
|
|
|
await repo.UpdateAsync(new AppSettingsEntity { CentralWorktreeRoot = " " });
|
|
var row = await repo.GetAsync();
|
|
|
|
Assert.Null(row.CentralWorktreeRoot);
|
|
}
|
|
}
|