feat(worker): session skills SignalR surface + per-level persistence

This commit is contained in:
Mika Kuns
2026-07-23 16:47:14 +02:00
committed by mika kuns
parent 4626481359
commit b4c58087d2
18 changed files with 397 additions and 19 deletions
@@ -60,6 +60,42 @@ public sealed class ListRepositoryConfigTests : IDisposable
Assert.Equal("haiku-4-5", fetched.Model);
}
[Fact]
public async Task SetConfig_Persists_SessionSkills_On_Insert()
{
await _repo.SetConfigAsync(new ListConfigEntity
{
ListId = _listId,
SessionSkills = "[\"ponytail\"]",
});
var fetched = await _repo.GetConfigAsync(_listId);
Assert.NotNull(fetched);
Assert.Equal("[\"ponytail\"]", fetched.SessionSkills);
}
[Fact]
public async Task SetConfig_Persists_SessionSkills_On_Update()
{
await _repo.SetConfigAsync(new ListConfigEntity { ListId = _listId, SessionSkills = "[\"a\"]" });
await _repo.SetConfigAsync(new ListConfigEntity { ListId = _listId, SessionSkills = "[\"b\",\"c\"]" });
var fetched = await _repo.GetConfigAsync(_listId);
Assert.NotNull(fetched);
Assert.Equal("[\"b\",\"c\"]", fetched.SessionSkills);
}
[Fact]
public async Task SetConfig_Null_SessionSkills_Clears_On_Update()
{
await _repo.SetConfigAsync(new ListConfigEntity { ListId = _listId, SessionSkills = "[\"a\"]" });
await _repo.SetConfigAsync(new ListConfigEntity { ListId = _listId, SessionSkills = null });
var fetched = await _repo.GetConfigAsync(_listId);
Assert.NotNull(fetched);
Assert.Null(fetched.SessionSkills);
}
public void Dispose()
{
_ctx.Dispose();