RulesEngine/test/RulesEngine.UnitTest/ParameterNameChangeTest.cs

46 lines
1.7 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using RulesEngine.Models;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Dynamic;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
namespace RulesEngine.UnitTest
{
[ExcludeFromCodeCoverage]
public class ParameterNameChangeTest
{
[Fact]
public async Task RunTwiceTest_ReturnsExpectedResults()
{
var workflow = new Workflow {
WorkflowName = "ParameterNameChangeWorkflow",
Rules = new Rule[] {
new Rule {
RuleName = "ParameterNameChangeRule",
RuleExpressionType = RuleExpressionType.LambdaExpression,
Expression = "test.blah == 1"
}
}
};
var engine = new RulesEngine();
engine.AddOrUpdateWorkflow(workflow);
dynamic dynamicBlah = new ExpandoObject();
dynamicBlah.blah = (Int64)1;
var input_pass = new RuleParameter("test", dynamicBlah);
var input_fail = new RuleParameter("SOME_OTHER_NAME", dynamicBlah);
// RuleParameter name matches expression, so should pass.
var pass_results = await engine.ExecuteAllRulesAsync("ParameterNameChangeWorkflow", input_pass);
// RuleParameter name DOES NOT MATCH expression, so should fail.
var fail_results = await engine.ExecuteAllRulesAsync("ParameterNameChangeWorkflow", input_fail);
Assert.True(pass_results.First().IsSuccess);
Assert.False(fail_results.First().IsSuccess);
}
}
}