Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
94 lines
2.6 KiB
C#
94 lines
2.6 KiB
C#
using FluentAssertions;
|
|
using Fengling.Member.Domain.Aggregates.PointsRuleModel;
|
|
using Fengling.Member.Domain.Aggregates.PointsRuleModel.Enums;
|
|
|
|
namespace Fengling.Member.Domain.Tests.Aggregates.PointsRuleModel;
|
|
|
|
public class PointsRuleTests
|
|
{
|
|
[Fact]
|
|
public void Create_ShouldInitializeWithDefaultValues()
|
|
{
|
|
var rule = PointsRule.Create(
|
|
"注册送积分",
|
|
"REGISTER_POINTS",
|
|
RuleType.FixedValue,
|
|
100,
|
|
30);
|
|
|
|
rule.Name.Should().Be("注册送积分");
|
|
rule.Code.Should().Be("REGISTER_POINTS");
|
|
rule.RuleType.Should().Be(RuleType.FixedValue);
|
|
rule.BasePoints.Should().Be(100);
|
|
rule.ValidityDays.Should().Be(30);
|
|
rule.Priority.Should().Be(0);
|
|
rule.CalculationMode.Should().Be(CalculationMode.Synchronous);
|
|
rule.WeightFactor.Should().BeNull();
|
|
rule.IsActive.Should().BeTrue();
|
|
rule.Conditions.Should().BeEmpty();
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_WithAllParameters_ShouldSetAllProperties()
|
|
{
|
|
var rule = PointsRule.Create(
|
|
"消费送积分",
|
|
"CONSUMPTION_POINTS",
|
|
RuleType.PriceWeighted,
|
|
50,
|
|
7,
|
|
10,
|
|
CalculationMode.Asynchronous,
|
|
1.5m);
|
|
|
|
rule.Name.Should().Be("消费送积分");
|
|
rule.Code.Should().Be("CONSUMPTION_POINTS");
|
|
rule.RuleType.Should().Be(RuleType.PriceWeighted);
|
|
rule.BasePoints.Should().Be(50);
|
|
rule.ValidityDays.Should().Be(7);
|
|
rule.Priority.Should().Be(10);
|
|
rule.CalculationMode.Should().Be(CalculationMode.Asynchronous);
|
|
rule.WeightFactor.Should().Be(1.5m);
|
|
rule.IsActive.Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void AddCondition_ShouldAddConditionToList()
|
|
{
|
|
var rule = PointsRule.Create(
|
|
"消费送积分",
|
|
"CONSUMPTION_POINTS",
|
|
RuleType.PriceWeighted,
|
|
50,
|
|
30);
|
|
|
|
var condition = PointsRuleCondition.Create(
|
|
rule.Id,
|
|
DimensionType.Product,
|
|
"100",
|
|
"1");
|
|
|
|
rule.AddCondition(condition);
|
|
|
|
rule.Conditions.Should().HaveCount(1);
|
|
rule.Conditions.First().Should().Be(condition);
|
|
}
|
|
|
|
[Fact]
|
|
public void Deactivate_ShouldSetIsActiveToFalse()
|
|
{
|
|
var rule = PointsRule.Create(
|
|
"注册送积分",
|
|
"REGISTER_POINTS",
|
|
RuleType.FixedValue,
|
|
100,
|
|
30);
|
|
|
|
rule.IsActive.Should().BeTrue();
|
|
|
|
rule.Deactivate();
|
|
|
|
rule.IsActive.Should().BeFalse();
|
|
}
|
|
}
|