chore(claude-do): [A3] Settings + Update-Check: OperationStatus für Skill-Inst
Vorgaben: `docs/superpowers/plans/2026-08-11-operation-feedback.md`, Gruppe A, Entwurf A3. P0-1 ist gemergt: `src/ClaudeDo.Ui/Services/OperationStatus.cs` + `src/ClaudeDo.Ui/Views/Controls/OperationIndicator.axaml`. SCOPE-ÄNDERUNG (Nutzer, 2026-08-12): OnlineInbox Sign-In/Sign-Out ist AUS DEM SCOPE GENOMMEN — vorerst unwichtig. `ViewModels/Modals/Settings/OnlineInboxSettingsViewModel.cs` und die ClaudeDo-Task: 2356806f-f16e-4652-b615-4562e95c3a65
This commit is contained in:
@@ -10,9 +10,11 @@ public class UpdateCheckServiceTests
|
||||
{
|
||||
public GiteaRelease? Release { get; set; }
|
||||
public bool Throw { get; set; }
|
||||
public TaskCompletionSource<GiteaRelease?>? Gate { get; set; }
|
||||
|
||||
public Task<GiteaRelease?> GetLatestReleaseAsync(CancellationToken ct)
|
||||
{
|
||||
if (Gate is not null) return Gate.Task;
|
||||
if (Throw) throw new HttpRequestException();
|
||||
return Task.FromResult(Release);
|
||||
}
|
||||
@@ -58,5 +60,22 @@ public class UpdateCheckServiceTests
|
||||
var svc = new UpdateCheckService(new FakeReleaseClient { Throw = true }, "0.1.0");
|
||||
await svc.CheckNowAsync(CancellationToken.None);
|
||||
Assert.Equal(UpdateCheckStatus.CheckFailed, svc.LastCheckStatus);
|
||||
Assert.False(svc.Op.IsRunning);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CheckNowAsync_WhileRunning_OpIsRunningTrue_ThenResetAfterCompletion()
|
||||
{
|
||||
var releases = new FakeReleaseClient { Gate = new TaskCompletionSource<GiteaRelease?>() };
|
||||
var svc = new UpdateCheckService(releases, "0.1.0");
|
||||
|
||||
var check = svc.CheckNowAsync(CancellationToken.None);
|
||||
|
||||
Assert.True(svc.Op.IsRunning);
|
||||
|
||||
releases.Gate.SetResult(new GiteaRelease("v0.1.0", "r", new[] { new ReleaseAsset("ClaudeDo-0.1.0-win-x64.zip", "u", 1) }));
|
||||
await check;
|
||||
|
||||
Assert.False(svc.Op.IsRunning);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user