fengling-member-service/test/Fengling.Member.Domain.Tests/Aggregates/PointsRuleModel/PointsRuleTests.cs
sam 087948a8e1 docs: reorganize documentation structure
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-15 10:32:23 +08:00

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