43 lines
1.6 KiB
C#
43 lines
1.6 KiB
C#
using StellaOps.TaskRunner.Core.Execution;
|
|
using StellaOps.TaskRunner.Core.Execution.Simulation;
|
|
using StellaOps.TaskRunner.Core.Planning;
|
|
using StellaOps.TaskRunner.Core.TaskPacks;
|
|
|
|
using StellaOps.TestKit;
|
|
namespace StellaOps.TaskRunner.Tests;
|
|
|
|
public sealed class PackRunStateFactoryTests
|
|
{
|
|
[Trait("Category", TestCategories.Unit)]
|
|
[Fact]
|
|
public void CreateInitialState_AssignsGateReasons()
|
|
{
|
|
var manifest = TestManifests.Load(TestManifests.Sample);
|
|
var planner = new TaskPackPlanner();
|
|
var planResult = planner.Plan(manifest);
|
|
|
|
Assert.True(planResult.Success);
|
|
Assert.NotNull(planResult.Plan);
|
|
var plan = planResult.Plan!;
|
|
|
|
var context = new PackRunExecutionContext("run-state-factory", plan, DateTimeOffset.UtcNow);
|
|
var graphBuilder = new PackRunExecutionGraphBuilder();
|
|
var graph = graphBuilder.Build(plan);
|
|
var simulationEngine = new PackRunSimulationEngine();
|
|
|
|
var timestamp = DateTimeOffset.UtcNow;
|
|
var state = PackRunStateFactory.CreateInitialState(context, graph, simulationEngine, timestamp);
|
|
|
|
Assert.Equal("run-state-factory", state.RunId);
|
|
Assert.Equal(plan.Hash, state.PlanHash);
|
|
|
|
Assert.True(state.Steps.TryGetValue("approval", out var approvalStep));
|
|
Assert.Equal(PackRunStepExecutionStatus.Pending, approvalStep.Status);
|
|
Assert.Equal("requires-approval", approvalStep.StatusReason);
|
|
|
|
Assert.True(state.Steps.TryGetValue("plan-step", out var planStep));
|
|
Assert.Equal(PackRunStepExecutionStatus.Pending, planStep.Status);
|
|
Assert.Null(planStep.StatusReason);
|
|
}
|
|
}
|