test(ui): teach the worker-client fakes about TokenTracker status

This commit is contained in:
mika kuns
2026-08-24 16:26:09 +02:00
parent 074c0e4dbd
commit bf56cd8c75
2 changed files with 20 additions and 0 deletions
@@ -183,6 +183,17 @@ public abstract class StubWorkerClient : IWorkerClient
=> Task.FromResult<IReadOnlyList<ModelUsageRowDto>>(Array.Empty<ModelUsageRowDto>()); => Task.FromResult<IReadOnlyList<ModelUsageRowDto>>(Array.Empty<ModelUsageRowDto>());
public virtual Task<IReadOnlyList<TaskUsageRowDto>> GetTaskUsageAsync(DateOnly from, DateOnly to) public virtual Task<IReadOnlyList<TaskUsageRowDto>> GetTaskUsageAsync(DateOnly from, DateOnly to)
=> Task.FromResult<IReadOnlyList<TaskUsageRowDto>>(Array.Empty<TaskUsageRowDto>()); => Task.FromResult<IReadOnlyList<TaskUsageRowDto>>(Array.Empty<TaskUsageRowDto>());
// "Not installed, but Node is fine" — the state that exercises the hint card and the
// install button without ever touching a real CLI.
public virtual Task<TokenTrackerStatusDto?> GetTokenTrackerStatusAsync() =>
Task.FromResult<TokenTrackerStatusDto?>(new TokenTrackerStatusDto(
Installed: false, Version: null, NodeOk: true, NodeVersion: "v22.0.0",
LastFetchedUtc: null, LastError: null, FormatVersion: null, SessionCount: 0));
public virtual Task<TokenTrackerStatusDto?> RefreshTokenTrackerAsync() => GetTokenTrackerStatusAsync();
public virtual Task<TokenTrackerStatusDto?> InstallTokenTrackerAsync() => GetTokenTrackerStatusAsync();
public void RaiseUsageUpdated(UsageSnapshotDto snapshot) => UsageUpdatedEvent?.Invoke(snapshot); public void RaiseUsageUpdated(UsageSnapshotDto snapshot) => UsageUpdatedEvent?.Invoke(snapshot);
protected void RaisePropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); protected void RaisePropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
@@ -171,6 +171,15 @@ sealed class FakeWorkerClient : IWorkerClient
=> Task.FromResult<IReadOnlyList<ModelUsageRowDto>>(System.Array.Empty<ModelUsageRowDto>()); => Task.FromResult<IReadOnlyList<ModelUsageRowDto>>(System.Array.Empty<ModelUsageRowDto>());
public Task<IReadOnlyList<TaskUsageRowDto>> GetTaskUsageAsync(DateOnly from, DateOnly to) public Task<IReadOnlyList<TaskUsageRowDto>> GetTaskUsageAsync(DateOnly from, DateOnly to)
=> Task.FromResult<IReadOnlyList<TaskUsageRowDto>>(System.Array.Empty<TaskUsageRowDto>()); => Task.FromResult<IReadOnlyList<TaskUsageRowDto>>(System.Array.Empty<TaskUsageRowDto>());
public Task<TokenTrackerStatusDto?> GetTokenTrackerStatusAsync() =>
Task.FromResult<TokenTrackerStatusDto?>(new TokenTrackerStatusDto(
Installed: false, Version: null, NodeOk: true, NodeVersion: "v22.0.0",
LastFetchedUtc: null, LastError: null, FormatVersion: null, SessionCount: 0));
public Task<TokenTrackerStatusDto?> RefreshTokenTrackerAsync() => GetTokenTrackerStatusAsync();
public Task<TokenTrackerStatusDto?> InstallTokenTrackerAsync() => GetTokenTrackerStatusAsync();
} }
// ── Helper to build VM with pre-seeded Items ────────────────────────────────── // ── Helper to build VM with pre-seeded Items ──────────────────────────────────