- gRPC auth service for token validation - Value comparator system (string, numeric, boolean, datetime, collection) - Condition evaluator with strategy chain - Form definition and data improvements - Workflow instance/task endpoints updated - Seed data and EF design-time factory - Test coverage for comparators and handlers
108 lines
2.3 KiB
C#
108 lines
2.3 KiB
C#
namespace Workflow.Tests.Condition;
|
|
|
|
using System.Text.Json;
|
|
using FluentAssertions;
|
|
using Workflow.Domain.Expressions.Comparators;
|
|
using Xunit;
|
|
|
|
public class NumericComparatorTests
|
|
{
|
|
private readonly NumericComparator _sut = new();
|
|
|
|
[Fact]
|
|
public void Compare_Equals_DecimalValues_ReturnsTrue()
|
|
{
|
|
_sut.Compare(10.0m, "==", 10).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Equals_IntAndDouble_ReturnsTrue()
|
|
{
|
|
_sut.Compare(10, "==", 10.0).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Equals_StringNumeric_ReturnsTrue()
|
|
{
|
|
_sut.Compare("100", "==", 100).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_Equals_DifferentValues_ReturnsFalse()
|
|
{
|
|
_sut.Compare(5, "==", 10).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_NotEquals_ReturnsTrue()
|
|
{
|
|
_sut.Compare(5, "!=", 10).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_NotEquals_SameValues_ReturnsFalse()
|
|
{
|
|
_sut.Compare(5, "!=", 5).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_GreaterThan_ReturnsTrue()
|
|
{
|
|
_sut.Compare(10, ">", 5).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_GreaterThan_False()
|
|
{
|
|
_sut.Compare(5, ">", 10).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_LessThan_ReturnsTrue()
|
|
{
|
|
_sut.Compare(5, "<", 10).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_GreaterThanOrEqual_Equal()
|
|
{
|
|
_sut.Compare(10, ">=", 10).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_LessThanOrEqual_Equal()
|
|
{
|
|
_sut.Compare(10, "<=", 10).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_NonNumericField_ReturnsFalse()
|
|
{
|
|
_sut.Compare("hello", ">", 5).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_NonNumericCondition_ReturnsFalse()
|
|
{
|
|
_sut.Compare(10, ">", "abc").Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_NullField_ReturnsFalse()
|
|
{
|
|
_sut.Compare(null, "==", 5).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_UnsupportedOperator_ReturnsFalse()
|
|
{
|
|
_sut.Compare(10, "contains", 5).Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Compare_StringConditionValue_ParsesCorrectly()
|
|
{
|
|
_sut.Compare(250, ">", "100").Should().BeTrue();
|
|
}
|
|
}
|