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(); } }