work-flow/tests/Workflow.Tests/Condition/CollectionComparatorTests.cs
向宁 fc4ecbbacc feat: add gRPC auth, condition comparators, seed data, EF migrations
- 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
2026-05-20 20:28:35 +08:00

78 lines
2.1 KiB
C#

namespace Workflow.Tests.Condition;
using System.Text.Json;
using FluentAssertions;
using Workflow.Domain.Expressions.Comparators;
using Xunit;
public class CollectionComparatorTests
{
private readonly CollectionComparator _sut = new();
[Fact]
public void Compare_In_ValueInArray_ReturnsTrue()
{
var array = JsonDocument.Parse("""["pending", "review", "approved"]""").RootElement;
_sut.Compare("review", "in", array).Should().BeTrue();
}
[Fact]
public void Compare_In_ValueNotInArray_ReturnsFalse()
{
var array = JsonDocument.Parse("""["pending", "review"]""").RootElement;
_sut.Compare("rejected", "in", array).Should().BeFalse();
}
[Fact]
public void Compare_In_NumericValue_ReturnsTrue()
{
var array = JsonDocument.Parse("[1, 3, 5, 7]").RootElement;
_sut.Compare(5, "in", array).Should().BeTrue();
}
[Fact]
public void Compare_In_EmptyArray_ReturnsFalse()
{
var array = JsonDocument.Parse("[]").RootElement;
_sut.Compare("value", "in", array).Should().BeFalse();
}
[Fact]
public void Compare_In_CommaSeparatedString_ReturnsTrue()
{
_sut.Compare("review", "in", "pending,review,approved").Should().BeTrue();
}
[Fact]
public void Compare_In_CommaSeparatedString_ReturnsFalse()
{
_sut.Compare("rejected", "in", "pending,review").Should().BeFalse();
}
[Fact]
public void Compare_NullField_ReturnsFalse()
{
var array = JsonDocument.Parse("""["value"]""").RootElement;
_sut.Compare(null, "in", array).Should().BeFalse();
}
[Fact]
public void Compare_NullCondition_ReturnsFalse()
{
_sut.Compare("value", "in", null).Should().BeFalse();
}
[Fact]
public void Compare_UnsupportedOperator_ReturnsFalse()
{
_sut.Compare("value", "==", "something").Should().BeFalse();
}
[Fact]
public void Compare_In_NumericValueNotInArray_ReturnsFalse()
{
var array = JsonDocument.Parse("[1, 3, 5, 7]").RootElement;
_sut.Compare(4, "in", array).Should().BeFalse();
}
}