feature: Self-Service Clinical Testing Sessions
CI / backend (push) Successful in 8m52s
CI / frontend (push) Failing after 1m39s

This commit is contained in:
voltsrage
2026-08-06 04:03:04 +08:00
parent 1d28880920
commit 80b009fd23
41 changed files with 4922 additions and 123 deletions
@@ -0,0 +1,68 @@
using FluentAssertions;
using Microsoft.Extensions.Options;
using VigilCare.Simulation;
public class SessionCatalogTests
{
[Fact]
public void SessionCatalog_InvalidScenarioId_FailsAtStartup()
{
var dir = Path.Combine(Path.GetTempPath(), "vigilcare-session-catalog-" + Guid.NewGuid());
Directory.CreateDirectory(dir);
try
{
File.WriteAllText(Path.Combine(dir, "sessions.json"), """
{
"sessions": [
{
"id": "broken-session",
"name": "Broken",
"goal": "Should fail",
"estimatedMinutes": 1,
"defaultSpeed": 60,
"scenarios": ["does-not-exist-01"]
}
]
}
""");
var scenarios = new StubScenarioCatalog();
var options = Options.Create(new SimulationOptions
{
Enabled = true,
ScenarioDirectory = dir,
});
var act = () => new SessionCatalog(options, scenarios);
act.Should().Throw<InvalidOperationException>()
.WithMessage("*does-not-exist-01*");
}
finally
{
Directory.Delete(dir, recursive: true);
}
}
[Fact]
public void SessionCatalog_ValidManifest_LoadsPresets()
{
var fixtureDir = ApiFixture.SimulationScenarioDirectory;
var catalog = new ScenarioCatalog(Options.Create(new SimulationOptions
{
ScenarioDirectory = fixtureDir,
}));
var sessions = new SessionCatalog(
Options.Create(new SimulationOptions { ScenarioDirectory = fixtureDir }),
catalog);
sessions.ListSessions().Should().NotBeEmpty();
sessions.GetById("session-test-two")!.Scenarios.Should().HaveCount(2);
}
private sealed class StubScenarioCatalog : IScenarioCatalog
{
public IReadOnlyList<ScenarioFile> ListScenarios() => Array.Empty<ScenarioFile>();
public ScenarioFile? GetById(string scenarioId) => null;
}
}