test(app): add docker and main window view model tests

This commit is contained in:
dualfroz committed 2026-08-28 18:49:19 +02:00
1 parent 1f1b78e50b
commit 36fbba0250
3 files changed
+179

No files matched your search

@@ -0,0 +1,62 @@
using Vantage.App.Tests.Fakes;
using Vantage.App.ViewModels;
using Vantage.Core.Models;
using Xunit;
namespace Vantage.App.Tests;
public class ViewModelBindingTests
{
[Fact]
public void HostViewModel_ApplyMetricsUpdatesTextsAndHistory()
{
var host = new HostViewModel(new HostConfig { Name = "node", Address = "10.0.0.5", Username = "root", Port = 22 }, historyLength: 10);
host.ApplyMetrics(new HostMetrics
{
CpuUsagePercent = 42.5,
MemoryUsedBytes = 4L * 1024 * 1024 * 1024,
MemoryTotalBytes = 8L * 1024 * 1024 * 1024,
DiskUsedBytes = 50L * 1024 * 1024 * 1024,
DiskTotalBytes = 100L * 1024 * 1024 * 1024,
Load1 = 0.8,
Load5 = 0.6,
Load15 = 0.4,
Uptime = TimeSpan.FromHours(50)
});
Assert.Equal(42.5, host.CpuUsagePercent);
Assert.Equal(50.0, host.MemoryUsedPercent);
Assert.Single(host.CpuPoints);
Assert.Equal("4.0 GiB / 8.0 GiB", host.MemoryText);
Assert.True(host.IsOnline);
Assert.Equal("node", host.Name);
Assert.Equal("root@10.0.0.5:22", host.Endpoint);
}
[Fact]
public void HostViewModel_ApplyErrorMarksOffline()
{
var host = new HostViewModel(new HostConfig { Name = "node" }, historyLength: 10);
host.ApplyError("connection refused");
Assert.False(host.IsOnline);
Assert.Equal("connection refused", host.LastError);
Assert.Equal("Unreachable", host.StatusText);
}
[Fact]
public async Task HealthCheckViewModel_RunAppliesResult()
{
var config = new HealthCheckConfig { Name = "web", Kind = HealthKind.Http, Target = "https://x" };
var checker = new FakeHealthChecker(HealthCheckResult.Up(12.4, "HTTP 200 OK"));
var viewModel = new HealthCheckViewModel(config, checker);
await viewModel.RunCommand.ExecuteAsync(null);
Assert.Equal(HealthStatus.Up, viewModel.Status);
Assert.StartsWith("Up", viewModel.StatusText);
Assert.Equal("12 ms", viewModel.LatencyText);
}
}