V13-FE-006: consolidate approved UI and contract hardening
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s

This commit is contained in:
2026-08-13 02:41:00 +09:00
parent d79edae546
commit 3f293d8aa8
1278 changed files with 14384 additions and 1664 deletions
@@ -0,0 +1,14 @@
using KBX.Shared.Workflow;
using Xunit;
namespace KBX.Shared.Workflow.Tests;
public sealed class WorkflowGuardTests
{
private static readonly WorkflowTransition[] Transitions = [
new("confirm", new HashSet<string>{"DRAFT"}, "CONFIRMED"),
new("cancel", new HashSet<string>{"DRAFT","CONFIRMED"}, "CANCELLED", ReasonRequired:true)
];
[Fact] public void Allows_declared_transition() => Assert.Equal("CONFIRMED", WorkflowGuard.RequireTransition(Transitions,"confirm","DRAFT").To);
[Fact] public void Rejects_transition_from_wrong_state() => Assert.Throws<InvalidOperationException>(() => WorkflowGuard.RequireTransition(Transitions,"confirm","CONFIRMED"));
[Fact] public void Requires_reason_when_declared() => Assert.Throws<InvalidOperationException>(() => WorkflowGuard.RequireTransition(Transitions,"cancel","DRAFT"));
}