using TarninaHub.Domain.Enums; using TarninaHub.Domain.Rules; namespace TarninaHub.Tests.Domain; public class SubmissionWorkflowTests { [Theory] [InlineData(SubmissionStatus.New, SubmissionStatus.Triaged, true)] [InlineData(SubmissionStatus.New, SubmissionStatus.Matched, false)] [InlineData(SubmissionStatus.Triaged, SubmissionStatus.Matched, true)] [InlineData(SubmissionStatus.Matched, SubmissionStatus.InProgress, true)] [InlineData(SubmissionStatus.InProgress, SubmissionStatus.Closed, true)] [InlineData(SubmissionStatus.Closed, SubmissionStatus.Triaged, false)] [InlineData(SubmissionStatus.Rejected, SubmissionStatus.New, false)] public void CanTransition_EnforcesWorkflow(SubmissionStatus from, SubmissionStatus to, bool expected) { Assert.Equal(expected, SubmissionWorkflow.CanTransition(from, to)); } [Fact] public void CanTransition_AllowsSameStatus() { Assert.True(SubmissionWorkflow.CanTransition(SubmissionStatus.New, SubmissionStatus.New)); } [Theory] [InlineData(SubmissionStatus.Closed, true)] [InlineData(SubmissionStatus.Rejected, true)] [InlineData(SubmissionStatus.New, false)] public void IsTerminal_RecognizesFinalStates(SubmissionStatus status, bool expected) { Assert.Equal(expected, SubmissionWorkflow.IsTerminal(status)); } }