Merge branch 'claudedo/5c80a0aba5d9468a96cf809fc7a6e7a1'

This commit is contained in:
mika kuns
2026-08-10 15:15:26 +02:00
20 changed files with 1768 additions and 49 deletions
@@ -69,6 +69,35 @@ public sealed class ForeignKeyTests : IDisposable
}
}
[Fact]
public async Task DependsOnTaskId_is_nulled_when_predecessor_deleted_on_fresh_context()
{
var listId = Guid.NewGuid().ToString();
var predecessorId = Guid.NewGuid().ToString();
var dependentId = Guid.NewGuid().ToString();
await using (var ctx = Open())
{
ctx.Lists.Add(new ListEntity { Id = listId, Name = "L", CreatedAt = DateTime.UtcNow });
ctx.Tasks.Add(new TaskEntity { Id = predecessorId, ListId = listId, Title = "Predecessor", Status = TaskStatus.Idle, CreatedAt = DateTime.UtcNow });
ctx.Tasks.Add(new TaskEntity { Id = dependentId, ListId = listId, Title = "Dependent", Status = TaskStatus.Idle, DependsOnTaskId = predecessorId, CreatedAt = DateTime.UtcNow });
await ctx.SaveChangesAsync();
}
await using (var ctx = Open())
{
var predecessor = await ctx.Tasks.FindAsync(predecessorId);
ctx.Tasks.Remove(predecessor!);
await ctx.SaveChangesAsync();
}
await using (var ctx = Open())
{
var dependent = await ctx.Tasks.AsNoTracking().FirstAsync(t => t.Id == dependentId);
Assert.Null(dependent.DependsOnTaskId);
}
}
// ---- AppSettingsRepository: get-or-create resilience ----
[Fact]