Merge claudedo/3a3e87648400492bba6e9643007703db

This commit is contained in:
mika kuns
2026-08-06 11:41:55 +02:00
14 changed files with 281 additions and 1 deletions
@@ -0,0 +1,47 @@
using ClaudeDo.Ui.ViewModels;
using Xunit;
namespace ClaudeDo.Ui.Tests;
public class StaleWorkerBannerDecisionTests
{
private const string ShaA = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
private const string ShaB = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
[Fact]
public void True_when_build_is_a_strict_ancestor_of_head()
{
Assert.True(IslandsShellViewModel.ShouldShowStaleWorkerBanner(ShaA, ShaB, isAncestor: true));
}
[Fact]
public void False_when_build_equals_head_even_if_ancestor_check_says_true()
{
Assert.False(IslandsShellViewModel.ShouldShowStaleWorkerBanner(ShaA, ShaA, isAncestor: true));
}
[Fact]
public void False_when_ancestor_check_says_no()
{
Assert.False(IslandsShellViewModel.ShouldShowStaleWorkerBanner(ShaA, ShaB, isAncestor: false));
}
[Fact]
public void False_when_ancestor_check_is_unknown()
{
// Unknown must never be treated as stale.
Assert.False(IslandsShellViewModel.ShouldShowStaleWorkerBanner(ShaA, ShaB, isAncestor: null));
}
[Fact]
public void False_when_build_sha_missing()
{
Assert.False(IslandsShellViewModel.ShouldShowStaleWorkerBanner(null, ShaB, isAncestor: true));
}
[Fact]
public void False_when_head_sha_missing()
{
Assert.False(IslandsShellViewModel.ShouldShowStaleWorkerBanner(ShaA, null, isAncestor: true));
}
}
@@ -152,6 +152,8 @@ public abstract class StubWorkerClient : IWorkerClient
public virtual Task DeleteDailyNoteAsync(string id) => Task.CompletedTask;
public string LastPrepLog = "";
public virtual Task<string> GetLastPrepLogAsync() => Task.FromResult(LastPrepLog);
public WorkerBuildInfoDto? WorkerBuildInfo;
public virtual Task<WorkerBuildInfoDto?> GetWorkerBuildInfoAsync() => Task.FromResult(WorkerBuildInfo);
public virtual Task RefineTaskAsync(string taskId) => Task.CompletedTask;
public virtual Task<OnlineInboxStateDto?> GetOnlineInboxStateAsync() => Task.FromResult<OnlineInboxStateDto?>(null);